diff --git a/.github/workflows/weekly-refresh.yml b/.github/workflows/weekly-refresh.yml index 90b0b4b..de31649 100644 --- a/.github/workflows/weekly-refresh.yml +++ b/.github/workflows/weekly-refresh.yml @@ -27,6 +27,12 @@ jobs: run: | python scripts/refresh_tutorial_snapshots.py + - name: Verify Tutorial Sources + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + python scripts/verify_tutorial_sources.py + - name: Regenerate Repository Docs Assets env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 9926817..f6221e0 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Quick jump links: ## ✅ Source Verification Status -All tutorial indexes were re-verified against referenced upstream GitHub repositories on **2026-03-02**: +All tutorial indexes were re-verified against referenced upstream GitHub repositories on **2026-03-20**: - tutorials scanned: **191** - tutorials with source repos: **191** @@ -112,7 +112,7 @@ Verification artifacts: --- -## 🧬 Taskade Ecosystem Snapshot (Verified 2026-02-24) +## 🧬 Taskade Ecosystem Snapshot (Verified 2026-03-20) Live repository snapshot for high-intent Taskade/Genesis/AI/MCP searches. @@ -195,6 +195,19 @@ Build autonomous AI systems that reason, plan, and collaborate. | **[Claude Flow](tutorials/claude-flow-tutorial/)** | 14.0K+ | TypeScript | Multi-agent orchestration, MCP server operations, and V2-V3 migration tradeoffs | | **[Devika](tutorials/devika-tutorial/)** | 19.5K+ | Python | AI software engineer agents, planning pipeline, and production governance | | **[BabyAGI](tutorials/babyagi-tutorial/)** | 18K+ | Python | Task-driven autonomous agent patterns, memory, and BabyAGI 2o/3 evolution | +| **[AgenticSeek](tutorials/agenticseek-tutorial/)** | 25.4K+ | Python | Local-first autonomous agent with multi-agent planning, browsing, and coding workflows | +| **[Agno](tutorials/agno-tutorial/)** | 38.3K+ | Python | Multi-agent systems with memory, orchestration, and AgentOS runtime | +| **[AutoAgent](tutorials/autoagent-tutorial/)** | 8.6K+ | Python | Zero-code agent creation through natural-language workflows | +| **[ADK Python](tutorials/adk-python-tutorial/)** | 18.1K+ | Python | Production-grade agent engineering with Google's Agent Development Kit | +| **[Qwen-Agent](tutorials/qwen-agent-tutorial/)** | 13.5K+ | Python | Tool-enabled agent framework with MCP, RAG, and multi-modal workflows | +| **[Strands Agents](tutorials/strands-agents-tutorial/)** | 5.2K+ | Python | Model-driven agents with native MCP, hooks, and deployment patterns | +| **[PocketFlow](tutorials/pocketflow-tutorial/)** | 10.1K+ | Python | Minimal LLM framework with graph-based workflows, multi-agent patterns, and RAG | +| **[Mastra](tutorials/mastra-tutorial/)** | 21.6K+ | TypeScript | AI agents and workflows with memory and MCP tooling | +| **[Mini-SWE-Agent](tutorials/mini-swe-agent-tutorial/)** | 3.1K+ | Python | Minimal autonomous code agent design with benchmark-oriented workflows | +| **[SWE-agent](tutorials/swe-agent-tutorial/)** | 18.6K+ | Python | Autonomous repository repair and benchmark-driven software engineering loops | +| **[Open SWE](tutorials/open-swe-tutorial/)** | 5.3K+ | Python | Async cloud coding agent architecture and migration playbook | +| **[HumanLayer](tutorials/humanlayer-tutorial/)** | 9.6K+ | Python | Context engineering and human-governed coding-agent workflows | +| **[Wshobson Agents](tutorials/wshobson-agents-tutorial/)** | 29.9K+ | TypeScript | Pluginized multi-agent workflows with specialist Claude Code agents | ### 🧠 LLM Frameworks & RAG @@ -215,6 +228,7 @@ Retrieval-augmented generation, model serving, and LLM tooling. | **[HuggingFace](tutorials/huggingface-tutorial/)** | 145K+ | Python | Transformers, model hub, training and inference | | **[Semantic Kernel](tutorials/semantic-kernel-tutorial/)** | 23K+ | C#/Python | Microsoft's AI orchestration SDK | | **[Fabric](tutorials/fabric-tutorial/)** | 26K+ | Go/Python | AI prompt pattern framework | +| **[Langflow](tutorials/langflow-tutorial/)** | 145K+ | Python/React | Visual AI agent and workflow platform with flow composition, APIs, and MCP deployment | ### 🖥️ LLM Infrastructure & Serving @@ -251,6 +265,7 @@ Full-stack AI chat platforms and copilots. | **[AnythingLLM](tutorials/anything-llm-tutorial/)** | 30K+ | Node.js | All-in-one AI desktop app | | **[GPT-OSS](tutorials/gpt-oss-tutorial/)** | - | TypeScript | Open-source GPT implementation | | **[Claude Quickstarts](tutorials/claude-quickstarts-tutorial/)** | 13.7K+ | Python/TypeScript | Production Claude integration patterns | +| **[Cherry Studio](tutorials/cherry-studio-tutorial/)** | 40.5K+ | TypeScript | Multi-provider AI desktop workspace with assistants, documents, and MCP tools | ### 🔧 Developer Tools & Productivity @@ -320,6 +335,74 @@ AI coding assistants, build systems, and dev infrastructure. | **[OpenAI Python SDK](tutorials/openai-python-sdk-tutorial/)** | 29.8K+ | Python | GPT API, embeddings, assistants, batch processing | | **[tiktoken](tutorials/tiktoken-tutorial/)** | 17.1K+ | Python/Rust | Token counting, encoding, cost optimization | +#### Terminal Coding Agents + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[GitHub Copilot CLI](tutorials/copilot-cli-tutorial/)** | 8.9K+ | TypeScript | Copilot agent workflows in the terminal with GitHub context and approval controls | +| **[Gemini CLI](tutorials/gemini-cli-tutorial/)** | 96.2K+ | TypeScript | Terminal-first agent workflows with tooling, MCP extensibility, and headless automation | +| **[Crush](tutorials/crush-tutorial/)** | 20.7K+ | Go/TypeScript | Multi-model terminal coding agent with LSP/MCP integrations and strong controls | +| **[Kimi CLI](tutorials/kimi-cli-tutorial/)** | 6.9K+ | TypeScript | Multi-mode terminal agent with MCP and ACP connectivity | +| **[Mistral Vibe](tutorials/mistral-vibe-tutorial/)** | 3.3K+ | TypeScript | Minimal CLI coding agent with profiles, skills, subagents, and ACP support | +| **[Goose](tutorials/goose-tutorial/)** | 32.1K+ | Python | Extensible open-source coding agent with controlled tool execution and provider flexibility | +| **[gptme](tutorials/gptme-tutorial/)** | 4.2K+ | Python | Local-first terminal agent with extensible tools and automation-friendly modes | +| **[Kilo Code](tutorials/kilocode-tutorial/)** | 16.1K+ | TypeScript | Agentic engineering across IDE and CLI surfaces with multi-mode control loops | +| **[Plandex](tutorials/plandex-tutorial/)** | 15K+ | TypeScript | Large-task coding workflows with strong context management and cumulative diff review | +| **[Codex CLI](tutorials/codex-cli-tutorial/)** | 62.7K+ | Rust/TypeScript | Local terminal agent workflows with sandbox, auth, MCP, and policy controls | + +#### Multi-Agent Orchestration + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[Claude Squad](tutorials/claude-squad-tutorial/)** | 6.2K+ | Bash/Tmux | Multi-agent terminal session orchestration across isolated workspaces | +| **[Superset Terminal](tutorials/superset-terminal-tutorial/)** | 3.3K+ | TypeScript | Command center for parallel coding agents with centralized monitoring | +| **[Vibe Kanban](tutorials/vibe-kanban-tutorial/)** | 22.2K+ | TypeScript | Multi-agent orchestration board for Claude Code, Codex, Gemini CLI, and more | +| **[CodeMachine CLI](tutorials/codemachine-cli-tutorial/)** | 2.3K+ | Python | Long-running coding-agent workflows with multi-agent coordination and context control | + +#### IDE & Visual Interfaces + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[Onlook](tutorials/onlook-tutorial/)** | 24.8K+ | TypeScript/React | Visual-first AI coding for Next.js and Tailwind with repo-backed edits | +| **[Opcode](tutorials/opcode-tutorial/)** | 20.7K+ | TypeScript/Electron | GUI command center for Claude Code sessions, agents, and MCP servers | +| **[Shotgun](tutorials/shotgun-tutorial/)** | 625+ | TypeScript | Spec-driven development workflows for large coding changes | + +#### Memory, Skills & Context + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[Cipher](tutorials/cipher-tutorial/)** | 3.5K+ | TypeScript | Shared memory layer for coding agents across IDEs, tools, and teams | +| **[Claude-Mem](tutorials/claude-mem-tutorial/)** | 32.3K+ | Python | Persistent memory compression and retrieval for Claude Code | +| **[Beads](tutorials/beads-tutorial/)** | 17.9K+ | Python | Git-backed task graph memory for structured coding-agent planning | +| **[Planning with Files](tutorials/planning-with-files-tutorial/)** | 15K+ | Markdown/CLI | Persistent file-based planning workflows for coding agents | +| **[Context7](tutorials/context7-tutorial/)** | 47.4K+ | TypeScript | Live version-aware documentation context for coding agents | +| **[OpenSrc](tutorials/opensrc-tutorial/)** | 1K+ | TypeScript | Deep source-code context retrieval for implementation-level agent reasoning | +| **[Serena](tutorials/serena-tutorial/)** | 20.9K+ | Python | Semantic code retrieval toolkit for coding agents on large codebases | +| **[AGENTS.md](tutorials/agents-md-tutorial/)** | 18.4K+ | Markdown | Portable repository guidance standard for coding agents | +| **[Claude Code Router](tutorials/claude-code-router-tutorial/)** | 28.8K+ | TypeScript | Multi-provider routing and control plane for Claude Code | +| **[Claude Plugins Official](tutorials/claude-plugins-official-tutorial/)** | 8.8K+ | TypeScript | Managed plugin directory and contribution standards for Claude Code | +| **[Compound Engineering Plugin](tutorials/compound-engineering-plugin-tutorial/)** | 9.7K+ | TypeScript | Compound engineering workflows across Claude Code and other toolchains | +| **[Everything Claude Code](tutorials/everything-claude-code-tutorial/)** | 57K+ | Markdown | Production configuration patterns for Claude Code agents, hooks, and skills | +| **[Awesome Claude Code](tutorials/awesome-claude-code-tutorial/)** | 25.8K+ | Curated List | High-signal Claude Code resources, commands, hooks, and workflows | +| **[Awesome Claude Skills](tutorials/awesome-claude-skills-tutorial/)** | 39.6K+ | Curated List | Discovery and evaluation of reusable Claude skills for coding workflows | +| **[OpenSkills](tutorials/openskills-tutorial/)** | 8.7K+ | TypeScript | Universal skill loading across Claude Code, Cursor, Codex, and Aider | +| **[Refly](tutorials/refly-tutorial/)** | 6.9K+ | TypeScript | Deterministic agent skills delivered through API, webhook, and CLI surfaces | + +#### MCP Servers & Integrations + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[Figma Context MCP](tutorials/figma-context-mcp-tutorial/)** | 13.3K+ | TypeScript | Design-to-code context for higher-fidelity coding-agent implementation | +| **[Chrome DevTools MCP](tutorials/chrome-devtools-mcp-tutorial/)** | 27.2K+ | TypeScript | Browser automation, tracing, and deep debugging for coding agents | +| **[Playwright MCP](tutorials/playwright-mcp-tutorial/)** | 28K+ | TypeScript | Structured browser automation through MCP with deterministic actions | +| **[GitHub MCP Server](tutorials/github-mcp-server-tutorial/)** | 27.4K+ | Go | GitHub operations through MCP for repos, issues, PRs, Actions, and security workflows | + +#### Legacy & Migration + +| Tutorial | Stars | Stack | What You'll Learn | +|:---------|:-----:|:------|:------------------| +| **[OpenCode AI Legacy](tutorials/opencode-ai-legacy-tutorial/)** | 11.2K+ | TypeScript | Archived terminal agent workflows and migration guidance to newer tooling | + ### 🗄️ Databases, Knowledge & Analytics Data platforms, knowledge management, and observability. @@ -340,6 +423,7 @@ Data platforms, knowledge management, and observability. | **[MeiliSearch](tutorials/meilisearch-tutorial/)** | 48K+ | Rust | Lightning-fast search engine | | **[PhotoPrism](tutorials/photoprism-tutorial/)** | 36K+ | Go | AI-powered photo management | | **[Liveblocks](tutorials/liveblocks-tutorial/)** | 4K+ | TypeScript | Real-time collaboration infra | +| **[Fireproof](tutorials/fireproof-tutorial/)** | 950+ | JavaScript | Local-first document database with encrypted sync and React hooks | ### ⚙️ Systems & Infrastructure diff --git a/discoverability/tutorial-source-verification.json b/discoverability/tutorial-source-verification.json index 1e76857..d9c800b 100644 --- a/discoverability/tutorial-source-verification.json +++ b/discoverability/tutorial-source-verification.json @@ -1,6 +1,6 @@ { - "generated_at_utc": "2026-03-02T16:35:18.287630Z", - "generated_on": "2026-03-02", + "generated_at_utc": "2026-03-21T05:47:48.324457Z", + "generated_on": "2026-03-21", "summary": { "tutorial_count": 191, "tutorials_with_source_repos": 191, @@ -14,372 +14,372 @@ { "archived": false, "default_branch": "main", - "forks": 47689, + "forks": 63410, "html_url": "https://github.com/openclaw/openclaw", "http_status": 200, - "open_issues": 10099, - "pushed_at": "2026-03-02T16:34:14Z", + "open_issues": 14561, + "pushed_at": "2026-03-21T05:45:11Z", "reason": "", "repo": "openclaw/openclaw", - "stars": 247023, - "updated_at": "2026-03-02T16:35:13Z", + "stars": 327464, + "updated_at": "2026-03-21T05:46:28Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 50622, + "forks": 50835, "html_url": "https://github.com/facebook/react", "http_status": 200, - "open_issues": 1148, - "pushed_at": "2026-03-02T08:36:26Z", + "open_issues": 1186, + "pushed_at": "2026-03-20T14:17:18Z", "reason": "", "repo": "facebook/react", - "stars": 243431, - "updated_at": "2026-03-02T15:50:21Z", + "stars": 244092, + "updated_at": "2026-03-21T04:47:10Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 55341, + "forks": 55984, "html_url": "https://github.com/n8n-io/n8n", "http_status": 200, - "open_issues": 1411, - "pushed_at": "2026-03-02T16:34:18Z", + "open_issues": 1443, + "pushed_at": "2026-03-21T05:40:14Z", "reason": "", "repo": "n8n-io/n8n", - "stars": 177197, - "updated_at": "2026-03-02T16:22:44Z", + "stars": 180232, + "updated_at": "2026-03-21T05:45:30Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 14734, + "forks": 15085, "html_url": "https://github.com/ollama/ollama", "http_status": 200, - "open_issues": 2535, - "pushed_at": "2026-03-02T03:17:33Z", + "open_issues": 2691, + "pushed_at": "2026-03-20T23:32:53Z", "reason": "", "repo": "ollama/ollama", - "stars": 163851, - "updated_at": "2026-03-02T16:23:36Z", + "stars": 165720, + "updated_at": "2026-03-21T05:41:35Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 32265, + "forks": 32554, "html_url": "https://github.com/huggingface/transformers", "http_status": 200, - "open_issues": 2276, - "pushed_at": "2026-03-02T16:33:41Z", + "open_issues": 2282, + "pushed_at": "2026-03-20T22:40:40Z", "reason": "", "repo": "huggingface/transformers", - "stars": 157266, - "updated_at": "2026-03-02T16:31:15Z", + "stars": 158154, + "updated_at": "2026-03-21T04:52:07Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 8503, + "forks": 8623, "html_url": "https://github.com/langflow-ai/langflow", "http_status": 200, - "open_issues": 1085, - "pushed_at": "2026-03-02T16:24:09Z", + "open_issues": 894, + "pushed_at": "2026-03-21T00:34:28Z", "reason": "", "repo": "langflow-ai/langflow", - "stars": 145194, - "updated_at": "2026-03-02T16:34:45Z", + "stars": 145966, + "updated_at": "2026-03-21T05:25:09Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 20384, + "forks": 20844, "html_url": "https://github.com/langgenius/dify", "http_status": 200, - "open_issues": 784, - "pushed_at": "2026-03-02T15:58:37Z", + "open_issues": 804, + "pushed_at": "2026-03-21T05:23:11Z", "reason": "", "repo": "langgenius/dify", - "stars": 130930, - "updated_at": "2026-03-02T16:28:54Z", + "stars": 133770, + "updated_at": "2026-03-21T05:37:25Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 21022, + "forks": 21495, "html_url": "https://github.com/langchain-ai/langchain", "http_status": 200, - "open_issues": 422, - "pushed_at": "2026-03-02T15:47:32Z", + "open_issues": 482, + "pushed_at": "2026-03-20T20:46:08Z", "reason": "", "repo": "langchain-ai/langchain", - "stars": 127956, - "updated_at": "2026-03-02T16:35:10Z", + "stars": 130416, + "updated_at": "2026-03-21T05:25:32Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 17765, + "forks": 18099, "html_url": "https://github.com/open-webui/open-webui", "http_status": 200, - "open_issues": 263, - "pushed_at": "2026-03-02T01:14:18Z", + "open_issues": 320, + "pushed_at": "2026-03-20T23:54:16Z", "reason": "", "repo": "open-webui/open-webui", - "stars": 125443, - "updated_at": "2026-03-02T16:25:10Z", + "stars": 128047, + "updated_at": "2026-03-21T05:47:42Z", "verified": true }, { "archived": false, "default_branch": "dev", - "forks": 11529, + "forks": 13375, "html_url": "https://github.com/anomalyco/opencode", "http_status": 200, - "open_issues": 6131, - "pushed_at": "2026-03-02T16:23:54Z", + "open_issues": 7257, + "pushed_at": "2026-03-21T05:31:00Z", "reason": "", "repo": "anomalyco/opencode", - "stars": 114224, - "updated_at": "2026-03-02T16:32:52Z", + "stars": 126634, + "updated_at": "2026-03-21T05:46:26Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 13243, + "forks": 13308, "html_url": "https://github.com/microsoft/TypeScript", "http_status": 200, - "open_issues": 5476, - "pushed_at": "2026-03-02T00:55:04Z", + "open_issues": 5498, + "pushed_at": "2026-03-20T01:24:15Z", "reason": "", "repo": "microsoft/TypeScript", - "stars": 107995, - "updated_at": "2026-03-02T11:50:12Z", + "stars": 108220, + "updated_at": "2026-03-21T05:04:21Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 11978, + "forks": 12254, "html_url": "https://github.com/Comfy-Org/ComfyUI", "http_status": 200, - "open_issues": 3781, - "pushed_at": "2026-03-02T13:14:30Z", + "open_issues": 3859, + "pushed_at": "2026-03-21T03:15:53Z", "reason": "", "repo": "comfyanonymous/ComfyUI", - "stars": 104688, - "updated_at": "2026-03-02T16:30:36Z", + "stars": 106478, + "updated_at": "2026-03-21T05:28:34Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 11689, + "forks": 11845, "html_url": "https://github.com/supabase/supabase", "http_status": 200, - "open_issues": 966, - "pushed_at": "2026-03-02T16:35:11Z", + "open_issues": 955, + "pushed_at": "2026-03-20T21:51:06Z", "reason": "", "repo": "supabase/supabase", - "stars": 98422, - "updated_at": "2026-03-02T16:33:28Z", + "stars": 99368, + "updated_at": "2026-03-21T04:35:16Z", + "verified": true + }, + { + "archived": false, + "default_branch": "main", + "forks": 10717, + "html_url": "https://github.com/anthropics/skills", + "http_status": 200, + "open_issues": 536, + "pushed_at": "2026-03-06T20:06:23Z", + "reason": "", + "repo": "anthropics/skills", + "stars": 98785, + "updated_at": "2026-03-21T05:44:37Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 15176, + "forks": 15675, "html_url": "https://github.com/ggml-org/llama.cpp", "http_status": 200, - "open_issues": 1167, - "pushed_at": "2026-03-02T15:59:53Z", + "open_issues": 1288, + "pushed_at": "2026-03-21T04:46:00Z", "reason": "", "repo": "ggerganov/llama.cpp", - "stars": 96348, - "updated_at": "2026-03-02T16:17:36Z", + "stars": 98779, + "updated_at": "2026-03-21T05:47:23Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 11816, + "forks": 12466, "html_url": "https://github.com/google-gemini/gemini-cli", "http_status": 200, - "open_issues": 2501, - "pushed_at": "2026-03-02T16:15:35Z", + "open_issues": 3078, + "pushed_at": "2026-03-21T05:31:59Z", "reason": "", "repo": "google-gemini/gemini-cli", - "stars": 96224, - "updated_at": "2026-03-02T16:02:08Z", + "stars": 98524, + "updated_at": "2026-03-21T05:32:02Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 11810, + "forks": 11906, "html_url": "https://github.com/openai/whisper", "http_status": 200, - "open_issues": 115, + "open_issues": 116, "pushed_at": "2025-12-15T10:18:21Z", "reason": "", "repo": "openai/whisper", - "stars": 95307, - "updated_at": "2026-03-02T16:34:19Z", + "stars": 96361, + "updated_at": "2026-03-21T05:26:47Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 6203, + "forks": 6533, "html_url": "https://github.com/firecrawl/firecrawl", "http_status": 200, - "open_issues": 199, - "pushed_at": "2026-03-02T16:05:31Z", + "open_issues": 227, + "pushed_at": "2026-03-21T04:36:43Z", "reason": "", "repo": "firecrawl/firecrawl", - "stars": 87358, - "updated_at": "2026-03-02T16:35:11Z", + "stars": 95811, + "updated_at": "2026-03-21T05:47:02Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 6203, + "forks": 6533, "html_url": "https://github.com/firecrawl/firecrawl", "http_status": 200, - "open_issues": 199, - "pushed_at": "2026-03-02T16:05:31Z", + "open_issues": 227, + "pushed_at": "2026-03-21T04:36:43Z", "reason": "", "repo": "mendableai/firecrawl", - "stars": 87358, - "updated_at": "2026-03-02T16:35:11Z", + "stars": 95811, + "updated_at": "2026-03-21T05:47:02Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 7727, - "html_url": "https://github.com/punkpeye/awesome-mcp-servers", + "forks": 11994, + "html_url": "https://github.com/affaan-m/everything-claude-code", "http_status": 200, - "open_issues": 697, - "pushed_at": "2026-02-26T06:01:35Z", + "open_issues": 32, + "pushed_at": "2026-03-21T03:40:14Z", "reason": "", - "repo": "punkpeye/awesome-mcp-servers", - "stars": 81956, - "updated_at": "2026-03-02T16:28:05Z", + "repo": "affaan-m/everything-claude-code", + "stars": 91327, + "updated_at": "2026-03-21T05:47:40Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 8523, - "html_url": "https://github.com/anthropics/skills", + "forks": 8416, + "html_url": "https://github.com/punkpeye/awesome-mcp-servers", "http_status": 200, - "open_issues": 363, - "pushed_at": "2026-02-25T04:28:41Z", + "open_issues": 1047, + "pushed_at": "2026-03-19T21:54:44Z", "reason": "", - "repo": "anthropics/skills", - "stars": 81153, - "updated_at": "2026-03-02T16:34:47Z", + "repo": "punkpeye/awesome-mcp-servers", + "stars": 83707, + "updated_at": "2026-03-21T05:23:30Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 9721, + "forks": 9999, "html_url": "https://github.com/modelcontextprotocol/servers", "http_status": 200, - "open_issues": 407, - "pushed_at": "2026-02-28T21:17:22Z", + "open_issues": 545, + "pushed_at": "2026-03-17T14:21:11Z", "reason": "", "repo": "modelcontextprotocol/servers", - "stars": 79872, - "updated_at": "2026-03-02T16:06:05Z", + "stars": 81667, + "updated_at": "2026-03-21T05:24:24Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 9383, + "forks": 9619, "html_url": "https://github.com/browser-use/browser-use", "http_status": 200, - "open_issues": 225, - "pushed_at": "2026-03-02T07:00:46Z", + "open_issues": 220, + "pushed_at": "2026-03-20T20:01:38Z", "reason": "", "repo": "browser-use/browser-use", - "stars": 79382, - "updated_at": "2026-03-02T16:25:29Z", + "stars": 81509, + "updated_at": "2026-03-21T05:41:55Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 8236, - "html_url": "https://github.com/infiniflow/ragflow", - "http_status": 200, - "open_issues": 3013, - "pushed_at": "2026-03-02T13:31:12Z", - "reason": "", - "repo": "infiniflow/ragflow", - "stars": 74033, - "updated_at": "2026-03-02T16:31:25Z", - "verified": true - }, - { - "archived": false, - "default_branch": "canary", - "forks": 14706, - "html_url": "https://github.com/lobehub/lobehub", + "forks": 6680, + "html_url": "https://github.com/anthropics/claude-code", "http_status": 200, - "open_issues": 803, - "pushed_at": "2026-03-02T16:19:50Z", + "open_issues": 7260, + "pushed_at": "2026-03-20T22:24:50Z", "reason": "", - "repo": "lobehub/lobe-chat", - "stars": 72894, - "updated_at": "2026-03-02T16:10:50Z", + "repo": "anthropics/claude-code", + "stars": 80666, + "updated_at": "2026-03-21T05:41:59Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 5761, - "html_url": "https://github.com/anthropics/claude-code", + "forks": 8470, + "html_url": "https://github.com/infiniflow/ragflow", "http_status": 200, - "open_issues": 5485, - "pushed_at": "2026-03-02T12:22:14Z", + "open_issues": 3139, + "pushed_at": "2026-03-20T15:39:34Z", "reason": "", - "repo": "anthropics/claude-code", - "stars": 72674, - "updated_at": "2026-03-02T16:33:44Z", + "repo": "infiniflow/ragflow", + "stars": 75637, + "updated_at": "2026-03-21T05:31:02Z", "verified": true } ], "tutorials": [ { - "index_path": "tutorials/activepieces-tutorial/index.md", + "index_path": "tutorials/activepieces-tutorial/README.md", "primary_repo": "activepieces/activepieces", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3356, + "forks": 3435, "html_url": "https://github.com/activepieces/activepieces", "http_status": 200, - "open_issues": 393, - "pushed_at": "2026-03-02T16:29:18Z", + "open_issues": 629, + "pushed_at": "2026-03-21T05:40:58Z", "reason": "", "repo": "activepieces/activepieces", - "stars": 21031, - "updated_at": "2026-03-02T16:20:36Z", + "stars": 21330, + "updated_at": "2026-03-21T04:37:28Z", "verified": true } ], @@ -392,36 +392,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/adk-python-tutorial/index.md", + "index_path": "tutorials/adk-python-tutorial/README.md", "primary_repo": "google/adk-python", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2997, + "forks": 3110, "html_url": "https://github.com/google/adk-python", "http_status": 200, - "open_issues": 537, - "pushed_at": "2026-03-02T06:32:19Z", + "open_issues": 622, + "pushed_at": "2026-03-20T19:41:12Z", "reason": "", "repo": "google/adk-python", - "stars": 18109, - "updated_at": "2026-03-02T14:51:05Z", + "stars": 18507, + "updated_at": "2026-03-21T03:19:32Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 2290, + "forks": 2339, "html_url": "https://github.com/google/adk-samples", "http_status": 200, - "open_issues": 334, - "pushed_at": "2026-03-02T02:17:30Z", + "open_issues": 358, + "pushed_at": "2026-03-19T17:28:24Z", "reason": "", "repo": "google/adk-samples", - "stars": 8547, - "updated_at": "2026-03-02T16:21:40Z", + "stars": 8720, + "updated_at": "2026-03-21T05:06:27Z", "verified": true } ], @@ -435,36 +435,36 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/ag2-tutorial/index.md", + "index_path": "tutorials/ag2-tutorial/README.md", "primary_repo": "ag2ai/ag2", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 548, + "forks": 561, "html_url": "https://github.com/ag2ai/ag2", "http_status": 200, - "open_issues": 195, - "pushed_at": "2026-03-01T20:49:03Z", + "open_issues": 208, + "pushed_at": "2026-03-21T04:48:27Z", "reason": "", "repo": "ag2ai/ag2", - "stars": 4209, - "updated_at": "2026-03-02T11:40:15Z", + "stars": 4291, + "updated_at": "2026-03-21T05:31:35Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 8284, + "forks": 8424, "html_url": "https://github.com/microsoft/autogen", "http_status": 200, - "open_issues": 629, - "pushed_at": "2026-01-22T16:27:56Z", + "open_issues": 689, + "pushed_at": "2026-03-18T22:16:35Z", "reason": "", "repo": "microsoft/autogen", - "stars": 55070, - "updated_at": "2026-03-02T16:25:03Z", + "stars": 55951, + "updated_at": "2026-03-21T05:43:19Z", "verified": true } ], @@ -478,22 +478,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/agentgpt-tutorial/index.md", + "index_path": "tutorials/agentgpt-tutorial/README.md", "primary_repo": "reworkd/AgentGPT", "primary_repo_verified": true, "repositories": [ { "archived": true, "default_branch": "main", - "forks": 9442, + "forks": 9426, "html_url": "https://github.com/reworkd/AgentGPT", "http_status": 200, "open_issues": 219, "pushed_at": "2025-04-29T01:19:32Z", "reason": "", "repo": "reworkd/AgentGPT", - "stars": 35756, - "updated_at": "2026-03-02T15:11:33Z", + "stars": 35858, + "updated_at": "2026-03-21T04:15:52Z", "verified": true } ], @@ -506,22 +506,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/agenticseek-tutorial/index.md", + "index_path": "tutorials/agenticseek-tutorial/README.md", "primary_repo": "Fosowl/agenticSeek", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2819, + "forks": 2843, "html_url": "https://github.com/Fosowl/agenticSeek", "http_status": 200, - "open_issues": 44, - "pushed_at": "2026-02-28T20:32:01Z", + "open_issues": 34, + "pushed_at": "2026-03-16T19:02:51Z", "reason": "", "repo": "Fosowl/agenticSeek", - "stars": 25383, - "updated_at": "2026-03-02T15:51:02Z", + "stars": 25564, + "updated_at": "2026-03-21T03:04:35Z", "verified": true } ], @@ -534,22 +534,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/agents-md-tutorial/index.md", + "index_path": "tutorials/agents-md-tutorial/README.md", "primary_repo": "agentsmd/agents.md", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1321, + "forks": 1383, "html_url": "https://github.com/agentsmd/agents.md", "http_status": 200, - "open_issues": 121, - "pushed_at": "2025-12-19T20:06:52Z", + "open_issues": 126, + "pushed_at": "2026-03-12T14:26:14Z", "reason": "", "repo": "agentsmd/agents.md", - "stars": 18371, - "updated_at": "2026-03-02T15:39:19Z", + "stars": 19217, + "updated_at": "2026-03-21T05:44:19Z", "verified": true } ], @@ -562,22 +562,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/agno-tutorial/index.md", + "index_path": "tutorials/agno-tutorial/README.md", "primary_repo": "agno-agi/agno", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5078, + "forks": 5146, "html_url": "https://github.com/agno-agi/agno", "http_status": 200, - "open_issues": 630, - "pushed_at": "2026-03-02T16:23:35Z", + "open_issues": 686, + "pushed_at": "2026-03-20T18:24:53Z", "reason": "", "repo": "agno-agi/agno", - "stars": 38344, - "updated_at": "2026-03-02T16:23:59Z", + "stars": 38834, + "updated_at": "2026-03-21T03:30:29Z", "verified": true } ], @@ -590,22 +590,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/aider-tutorial/index.md", + "index_path": "tutorials/aider-tutorial/README.md", "primary_repo": "Aider-AI/aider", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3929, + "forks": 4053, "html_url": "https://github.com/Aider-AI/aider", "http_status": 200, - "open_issues": 1405, - "pushed_at": "2026-02-25T14:19:03Z", + "open_issues": 1448, + "pushed_at": "2026-03-17T01:21:34Z", "reason": "", "repo": "Aider-AI/aider", - "stars": 41105, - "updated_at": "2026-03-02T16:35:09Z", + "stars": 42196, + "updated_at": "2026-03-21T04:15:42Z", "verified": true } ], @@ -618,36 +618,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/anthropic-code-tutorial/index.md", + "index_path": "tutorials/anthropic-code-tutorial/README.md", "primary_repo": "anthropics/anthropic-sdk-python", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 488, + "forks": 538, "html_url": "https://github.com/anthropics/anthropic-sdk-python", "http_status": 200, - "open_issues": 125, - "pushed_at": "2026-03-02T10:26:58Z", + "open_issues": 160, + "pushed_at": "2026-03-21T05:16:12Z", "reason": "", "repo": "anthropics/anthropic-sdk-python", - "stars": 2851, - "updated_at": "2026-03-02T08:45:23Z", + "stars": 2992, + "updated_at": "2026-03-21T04:30:12Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 229, + "forks": 253, "html_url": "https://github.com/anthropics/anthropic-sdk-typescript", "http_status": 200, - "open_issues": 95, - "pushed_at": "2026-03-02T05:21:21Z", + "open_issues": 109, + "pushed_at": "2026-03-21T05:16:22Z", "reason": "", "repo": "anthropics/anthropic-sdk-typescript", - "stars": 1660, - "updated_at": "2026-03-02T10:52:47Z", + "stars": 1740, + "updated_at": "2026-03-21T04:30:54Z", "verified": true } ], @@ -661,22 +661,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/anthropic-skills-tutorial/index.md", + "index_path": "tutorials/anthropic-skills-tutorial/README.md", "primary_repo": "anthropics/skills", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8523, + "forks": 10717, "html_url": "https://github.com/anthropics/skills", "http_status": 200, - "open_issues": 363, - "pushed_at": "2026-02-25T04:28:41Z", + "open_issues": 536, + "pushed_at": "2026-03-06T20:06:23Z", "reason": "", "repo": "anthropics/skills", - "stars": 81153, - "updated_at": "2026-03-02T16:34:47Z", + "stars": 98785, + "updated_at": "2026-03-21T05:44:37Z", "verified": true } ], @@ -689,22 +689,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/anything-llm-tutorial/index.md", + "index_path": "tutorials/anything-llm-tutorial/README.md", "primary_repo": "Mintplex-Labs/anything-llm", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 5973, + "forks": 6107, "html_url": "https://github.com/Mintplex-Labs/anything-llm", "http_status": 200, - "open_issues": 294, - "pushed_at": "2026-03-02T16:16:28Z", + "open_issues": 304, + "pushed_at": "2026-03-21T04:02:30Z", "reason": "", "repo": "Mintplex-Labs/anything-llm", - "stars": 55278, - "updated_at": "2026-03-02T16:22:34Z", + "stars": 56534, + "updated_at": "2026-03-21T05:09:37Z", "verified": true } ], @@ -717,22 +717,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/athens-research-knowledge-graph/index.md", + "index_path": "tutorials/athens-research-knowledge-graph/README.md", "primary_repo": "athensresearch/athens", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 398, + "forks": 400, "html_url": "https://github.com/athensresearch/athens", "http_status": 200, "open_issues": 316, "pushed_at": "2023-02-03T12:32:15Z", "reason": "", "repo": "athensresearch/athens", - "stars": 6314, - "updated_at": "2026-03-01T16:37:06Z", + "stars": 6312, + "updated_at": "2026-03-20T19:03:28Z", "verified": true } ], @@ -745,22 +745,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/autoagent-tutorial/index.md", + "index_path": "tutorials/autoagent-tutorial/README.md", "primary_repo": "HKUDS/AutoAgent", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1215, + "forks": 1222, "html_url": "https://github.com/HKUDS/AutoAgent", "http_status": 200, - "open_issues": 55, + "open_issues": 57, "pushed_at": "2025-10-16T06:35:28Z", "reason": "", "repo": "HKUDS/AutoAgent", - "stars": 8622, - "updated_at": "2026-03-02T16:16:54Z", + "stars": 8681, + "updated_at": "2026-03-20T22:05:11Z", "verified": true } ], @@ -773,22 +773,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/autogen-tutorial/index.md", + "index_path": "tutorials/autogen-tutorial/README.md", "primary_repo": "microsoft/autogen", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8284, + "forks": 8424, "html_url": "https://github.com/microsoft/autogen", "http_status": 200, - "open_issues": 629, - "pushed_at": "2026-01-22T16:27:56Z", + "open_issues": 689, + "pushed_at": "2026-03-18T22:16:35Z", "reason": "", "repo": "microsoft/autogen", - "stars": 55070, - "updated_at": "2026-03-02T16:25:03Z", + "stars": 55951, + "updated_at": "2026-03-21T05:43:19Z", "verified": true } ], @@ -801,22 +801,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/awesome-claude-code-tutorial/index.md", + "index_path": "tutorials/awesome-claude-code-tutorial/README.md", "primary_repo": "hesreallyhim/awesome-claude-code", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1600, + "forks": 1994, "html_url": "https://github.com/hesreallyhim/awesome-claude-code", "http_status": 200, - "open_issues": 69, - "pushed_at": "2026-03-02T13:38:42Z", + "open_issues": 89, + "pushed_at": "2026-03-21T00:32:25Z", "reason": "", "repo": "hesreallyhim/awesome-claude-code", - "stars": 25829, - "updated_at": "2026-03-02T16:30:03Z", + "stars": 29473, + "updated_at": "2026-03-21T05:46:26Z", "verified": true } ], @@ -829,22 +829,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/awesome-claude-skills-tutorial/index.md", + "index_path": "tutorials/awesome-claude-skills-tutorial/README.md", "primary_repo": "ComposioHQ/awesome-claude-skills", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 3921, + "forks": 4728, "html_url": "https://github.com/ComposioHQ/awesome-claude-skills", "http_status": 200, - "open_issues": 230, + "open_issues": 345, "pushed_at": "2026-02-19T06:22:06Z", "reason": "", "repo": "ComposioHQ/awesome-claude-skills", - "stars": 39593, - "updated_at": "2026-03-02T16:29:36Z", + "stars": 46490, + "updated_at": "2026-03-21T05:42:54Z", "verified": true } ], @@ -857,36 +857,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/awesome-mcp-servers-tutorial/index.md", + "index_path": "tutorials/awesome-mcp-servers-tutorial/README.md", "primary_repo": "punkpeye/awesome-mcp-servers", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 7727, + "forks": 8416, "html_url": "https://github.com/punkpeye/awesome-mcp-servers", "http_status": 200, - "open_issues": 697, - "pushed_at": "2026-02-26T06:01:35Z", + "open_issues": 1047, + "pushed_at": "2026-03-19T21:54:44Z", "reason": "", "repo": "punkpeye/awesome-mcp-servers", - "stars": 81956, - "updated_at": "2026-03-02T16:28:05Z", + "stars": 83707, + "updated_at": "2026-03-21T05:23:30Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 522, + "forks": 533, "html_url": "https://github.com/punkpeye/awesome-mcp-clients", "http_status": 200, - "open_issues": 12, - "pushed_at": "2026-01-23T05:02:20Z", + "open_issues": 15, + "pushed_at": "2026-03-07T18:05:59Z", "reason": "", "repo": "punkpeye/awesome-mcp-clients", - "stars": 6309, - "updated_at": "2026-03-02T13:40:05Z", + "stars": 6364, + "updated_at": "2026-03-20T08:03:36Z", "verified": true } ], @@ -900,22 +900,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/awslabs-mcp-tutorial/index.md", + "index_path": "tutorials/awslabs-mcp-tutorial/README.md", "primary_repo": "awslabs/mcp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1318, + "forks": 1370, "html_url": "https://github.com/awslabs/mcp", "http_status": 200, - "open_issues": 201, - "pushed_at": "2026-03-02T15:17:40Z", + "open_issues": 243, + "pushed_at": "2026-03-21T05:23:33Z", "reason": "", "repo": "awslabs/mcp", - "stars": 8295, - "updated_at": "2026-03-02T15:17:42Z", + "stars": 8519, + "updated_at": "2026-03-21T05:29:50Z", "verified": true } ], @@ -928,22 +928,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/babyagi-tutorial/index.md", + "index_path": "tutorials/babyagi-tutorial/README.md", "primary_repo": "yoheinakajima/babyagi", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2846, + "forks": 2850, "html_url": "https://github.com/yoheinakajima/babyagi", "http_status": 200, - "open_issues": 18, + "open_issues": 20, "pushed_at": "2026-01-31T05:05:45Z", "reason": "", "repo": "yoheinakajima/babyagi", - "stars": 22161, - "updated_at": "2026-03-02T12:07:47Z", + "stars": 22207, + "updated_at": "2026-03-20T17:37:10Z", "verified": true } ], @@ -956,22 +956,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/beads-tutorial/index.md", + "index_path": "tutorials/beads-tutorial/README.md", "primary_repo": "steveyegge/beads", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1109, + "forks": 1264, "html_url": "https://github.com/steveyegge/beads", "http_status": 200, - "open_issues": 75, - "pushed_at": "2026-03-02T06:31:45Z", + "open_issues": 37, + "pushed_at": "2026-03-21T02:13:22Z", "reason": "", "repo": "steveyegge/beads", - "stars": 17859, - "updated_at": "2026-03-02T16:25:16Z", + "stars": 19422, + "updated_at": "2026-03-21T05:22:40Z", "verified": true } ], @@ -984,22 +984,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/bentoml-tutorial/index.md", + "index_path": "tutorials/bentoml-tutorial/README.md", "primary_repo": "bentoml/BentoML", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 917, + "forks": 933, "html_url": "https://github.com/bentoml/BentoML", "http_status": 200, - "open_issues": 141, - "pushed_at": "2026-03-02T09:08:07Z", + "open_issues": 147, + "pushed_at": "2026-03-16T09:03:51Z", "reason": "", "repo": "bentoml/BentoML", - "stars": 8483, - "updated_at": "2026-03-02T12:27:52Z", + "stars": 8529, + "updated_at": "2026-03-20T18:52:58Z", "verified": true } ], @@ -1012,22 +1012,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/bolt-diy-tutorial/index.md", + "index_path": "tutorials/bolt-diy-tutorial/README.md", "primary_repo": "stackblitz-labs/bolt.diy", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 10355, + "forks": 10388, "html_url": "https://github.com/stackblitz-labs/bolt.diy", "http_status": 200, - "open_issues": 92, + "open_issues": 96, "pushed_at": "2026-02-07T14:36:22Z", "reason": "", "repo": "stackblitz-labs/bolt.diy", - "stars": 19068, - "updated_at": "2026-03-02T14:33:40Z", + "stars": 19190, + "updated_at": "2026-03-21T04:17:48Z", "verified": true } ], @@ -1040,22 +1040,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/botpress-tutorial/index.md", + "index_path": "tutorials/botpress-tutorial/README.md", "primary_repo": "botpress/botpress", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 2250, + "forks": 2251, "html_url": "https://github.com/botpress/botpress", "http_status": 200, - "open_issues": 99, - "pushed_at": "2026-03-02T16:02:20Z", + "open_issues": 87, + "pushed_at": "2026-03-21T01:04:01Z", "reason": "", "repo": "botpress/botpress", - "stars": 14576, - "updated_at": "2026-03-02T03:27:29Z", + "stars": 14615, + "updated_at": "2026-03-21T05:29:29Z", "verified": true } ], @@ -1068,22 +1068,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/browser-use-tutorial/index.md", + "index_path": "tutorials/browser-use-tutorial/README.md", "primary_repo": "browser-use/browser-use", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 9383, + "forks": 9619, "html_url": "https://github.com/browser-use/browser-use", "http_status": 200, - "open_issues": 225, - "pushed_at": "2026-03-02T07:00:46Z", + "open_issues": 220, + "pushed_at": "2026-03-20T20:01:38Z", "reason": "", "repo": "browser-use/browser-use", - "stars": 79382, - "updated_at": "2026-03-02T16:25:29Z", + "stars": 81509, + "updated_at": "2026-03-21T05:41:55Z", "verified": true } ], @@ -1096,22 +1096,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/chatbox-tutorial/index.md", + "index_path": "tutorials/chatbox-tutorial/README.md", "primary_repo": "Bin-Huang/chatbox", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3917, + "forks": 3950, "html_url": "https://github.com/chatboxai/chatbox", "http_status": 200, - "open_issues": 1053, - "pushed_at": "2026-02-13T15:51:08Z", + "open_issues": 1083, + "pushed_at": "2026-03-16T09:10:32Z", "reason": "", "repo": "Bin-Huang/chatbox", - "stars": 38727, - "updated_at": "2026-03-02T16:15:15Z", + "stars": 39057, + "updated_at": "2026-03-21T05:44:56Z", "verified": true } ], @@ -1124,22 +1124,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/cherry-studio-tutorial/index.md", + "index_path": "tutorials/cherry-studio-tutorial/README.md", "primary_repo": "CherryHQ/cherry-studio", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3740, + "forks": 3895, "html_url": "https://github.com/CherryHQ/cherry-studio", "http_status": 200, - "open_issues": 667, - "pushed_at": "2026-03-02T16:07:48Z", + "open_issues": 764, + "pushed_at": "2026-03-21T05:11:15Z", "reason": "", "repo": "CherryHQ/cherry-studio", - "stars": 40534, - "updated_at": "2026-03-02T16:34:19Z", + "stars": 41924, + "updated_at": "2026-03-21T05:45:55Z", "verified": true } ], @@ -1152,22 +1152,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/chroma-tutorial/index.md", + "index_path": "tutorials/chroma-tutorial/README.md", "primary_repo": "chroma-core/chroma", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2086, + "forks": 2141, "html_url": "https://github.com/chroma-core/chroma", "http_status": 200, - "open_issues": 519, - "pushed_at": "2026-03-02T05:28:12Z", + "open_issues": 513, + "pushed_at": "2026-03-21T01:08:31Z", "reason": "", "repo": "chroma-core/chroma", - "stars": 26406, - "updated_at": "2026-03-02T15:36:00Z", + "stars": 26747, + "updated_at": "2026-03-21T03:05:54Z", "verified": true } ], @@ -1180,22 +1180,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/chrome-devtools-mcp-tutorial/index.md", + "index_path": "tutorials/chrome-devtools-mcp-tutorial/README.md", "primary_repo": "ChromeDevTools/chrome-devtools-mcp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1586, + "forks": 1807, "html_url": "https://github.com/ChromeDevTools/chrome-devtools-mcp", "http_status": 200, - "open_issues": 68, - "pushed_at": "2026-03-02T16:27:09Z", + "open_issues": 87, + "pushed_at": "2026-03-21T00:16:09Z", "reason": "", "repo": "ChromeDevTools/chrome-devtools-mcp", - "stars": 27212, - "updated_at": "2026-03-02T16:28:50Z", + "stars": 30554, + "updated_at": "2026-03-21T05:41:54Z", "verified": true } ], @@ -1208,22 +1208,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/cipher-tutorial/index.md", + "index_path": "tutorials/cipher-tutorial/README.md", "primary_repo": "campfirein/cipher", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 360, + "forks": 361, "html_url": "https://github.com/campfirein/cipher", "http_status": 200, - "open_issues": 14, - "pushed_at": "2026-01-25T04:55:06Z", + "open_issues": 4, + "pushed_at": "2026-03-16T17:28:16Z", "reason": "", "repo": "campfirein/cipher", - "stars": 3549, - "updated_at": "2026-03-02T16:13:47Z", + "stars": 3596, + "updated_at": "2026-03-20T21:31:56Z", "verified": true } ], @@ -1236,22 +1236,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-code-router-tutorial/index.md", + "index_path": "tutorials/claude-code-router-tutorial/README.md", "primary_repo": "musistudio/claude-code-router", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2213, + "forks": 2313, "html_url": "https://github.com/musistudio/claude-code-router", "http_status": 200, - "open_issues": 803, - "pushed_at": "2026-01-10T13:42:08Z", + "open_issues": 841, + "pushed_at": "2026-03-04T05:48:17Z", "reason": "", "repo": "musistudio/claude-code-router", - "stars": 28751, - "updated_at": "2026-03-02T15:54:37Z", + "stars": 30101, + "updated_at": "2026-03-21T05:23:18Z", "verified": true } ], @@ -1264,22 +1264,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-code-tutorial/index.md", + "index_path": "tutorials/claude-code-tutorial/README.md", "primary_repo": "anthropics/claude-code", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5761, + "forks": 6680, "html_url": "https://github.com/anthropics/claude-code", "http_status": 200, - "open_issues": 5485, - "pushed_at": "2026-03-02T12:22:14Z", + "open_issues": 7260, + "pushed_at": "2026-03-20T22:24:50Z", "reason": "", "repo": "anthropics/claude-code", - "stars": 72674, - "updated_at": "2026-03-02T16:33:44Z", + "stars": 80666, + "updated_at": "2026-03-21T05:41:59Z", "verified": true } ], @@ -1292,22 +1292,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-flow-tutorial/index.md", + "index_path": "tutorials/claude-flow-tutorial/README.md", "primary_repo": "ruvnet/claude-flow", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1982, + "forks": 2413, "html_url": "https://github.com/ruvnet/ruflo", "http_status": 200, - "open_issues": 553, - "pushed_at": "2026-02-28T18:26:54Z", + "open_issues": 378, + "pushed_at": "2026-03-20T15:42:06Z", "reason": "", "repo": "ruvnet/claude-flow", - "stars": 17836, - "updated_at": "2026-03-02T16:35:04Z", + "stars": 22161, + "updated_at": "2026-03-21T05:30:56Z", "verified": true } ], @@ -1320,22 +1320,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-mem-tutorial/index.md", + "index_path": "tutorials/claude-mem-tutorial/README.md", "primary_repo": "thedotmack/claude-mem", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2194, + "forks": 2814, "html_url": "https://github.com/thedotmack/claude-mem", "http_status": 200, - "open_issues": 67, - "pushed_at": "2026-02-27T05:16:58Z", + "open_issues": 142, + "pushed_at": "2026-03-19T19:11:08Z", "reason": "", "repo": "thedotmack/claude-mem", - "stars": 32249, - "updated_at": "2026-03-02T16:22:37Z", + "stars": 38807, + "updated_at": "2026-03-21T05:46:09Z", "verified": true } ], @@ -1348,22 +1348,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-plugins-official-tutorial/index.md", + "index_path": "tutorials/claude-plugins-official-tutorial/README.md", "primary_repo": "anthropics/claude-plugins-official", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 854, + "forks": 1366, "html_url": "https://github.com/anthropics/claude-plugins-official", "http_status": 200, - "open_issues": 215, - "pushed_at": "2026-02-27T06:22:17Z", + "open_issues": 277, + "pushed_at": "2026-03-21T00:40:59Z", "reason": "", "repo": "anthropics/claude-plugins-official", - "stars": 8757, - "updated_at": "2026-03-02T16:28:17Z", + "stars": 13714, + "updated_at": "2026-03-21T05:47:09Z", "verified": true } ], @@ -1376,22 +1376,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-quickstarts-tutorial/index.md", + "index_path": "tutorials/claude-quickstarts-tutorial/README.md", "primary_repo": "anthropics/anthropic-quickstarts", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2514, + "forks": 2603, "html_url": "https://github.com/anthropics/claude-quickstarts", "http_status": 200, - "open_issues": 145, + "open_issues": 160, "pushed_at": "2026-02-05T20:47:09Z", "reason": "", "repo": "anthropics/anthropic-quickstarts", - "stars": 14961, - "updated_at": "2026-03-02T15:40:31Z", + "stars": 15442, + "updated_at": "2026-03-21T05:16:40Z", "verified": true } ], @@ -1404,22 +1404,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-squad-tutorial/index.md", + "index_path": "tutorials/claude-squad-tutorial/README.md", "primary_repo": "smtg-ai/claude-squad", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 417, + "forks": 445, "html_url": "https://github.com/smtg-ai/claude-squad", "http_status": 200, - "open_issues": 42, - "pushed_at": "2026-03-01T08:23:37Z", + "open_issues": 41, + "pushed_at": "2026-03-12T07:39:50Z", "reason": "", "repo": "smtg-ai/claude-squad", - "stars": 6178, - "updated_at": "2026-03-02T12:54:45Z", + "stars": 6455, + "updated_at": "2026-03-21T05:34:46Z", "verified": true } ], @@ -1432,22 +1432,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/claude-task-master-tutorial/index.md", + "index_path": "tutorials/claude-task-master-tutorial/README.md", "primary_repo": "eyaltoledano/claude-task-master", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2441, + "forks": 2450, "html_url": "https://github.com/eyaltoledano/claude-task-master", "http_status": 200, - "open_issues": 166, - "pushed_at": "2026-02-23T17:11:00Z", + "open_issues": 179, + "pushed_at": "2026-03-17T16:13:11Z", "reason": "", "repo": "eyaltoledano/claude-task-master", - "stars": 25719, - "updated_at": "2026-03-02T15:36:02Z", + "stars": 26020, + "updated_at": "2026-03-21T03:55:10Z", "verified": true } ], @@ -1460,22 +1460,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/clickhouse-tutorial/index.md", + "index_path": "tutorials/clickhouse-tutorial/README.md", "primary_repo": "ClickHouse/ClickHouse", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 8130, + "forks": 8212, "html_url": "https://github.com/ClickHouse/ClickHouse", "http_status": 200, - "open_issues": 5361, - "pushed_at": "2026-03-02T16:21:58Z", + "open_issues": 5512, + "pushed_at": "2026-03-21T03:31:51Z", "reason": "", "repo": "ClickHouse/ClickHouse", - "stars": 46133, - "updated_at": "2026-03-02T15:44:59Z", + "stars": 46421, + "updated_at": "2026-03-21T04:32:00Z", "verified": true } ], @@ -1488,22 +1488,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/cline-tutorial/index.md", + "index_path": "tutorials/cline-tutorial/README.md", "primary_repo": "cline/cline", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5877, + "forks": 6002, "html_url": "https://github.com/cline/cline", "http_status": 200, - "open_issues": 779, - "pushed_at": "2026-03-02T14:39:39Z", + "open_issues": 802, + "pushed_at": "2026-03-21T03:26:31Z", "reason": "", "repo": "cline/cline", - "stars": 58554, - "updated_at": "2026-03-02T15:45:18Z", + "stars": 59198, + "updated_at": "2026-03-21T05:41:39Z", "verified": true } ], @@ -1516,22 +1516,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/codemachine-cli-tutorial/index.md", + "index_path": "tutorials/codemachine-cli-tutorial/README.md", "primary_repo": "moazbuilds/CodeMachine-CLI", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 226, + "forks": 234, "html_url": "https://github.com/moazbuilds/CodeMachine-CLI", "http_status": 200, - "open_issues": 3, + "open_issues": 6, "pushed_at": "2026-02-25T21:09:41Z", "reason": "", "repo": "moazbuilds/CodeMachine-CLI", - "stars": 2322, - "updated_at": "2026-03-02T15:53:30Z", + "stars": 2389, + "updated_at": "2026-03-21T05:36:40Z", "verified": true } ], @@ -1544,22 +1544,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/codex-analysis-platform/index.md", + "index_path": "tutorials/codex-analysis-platform/README.md", "primary_repo": "microsoft/TypeScript", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 13243, + "forks": 13308, "html_url": "https://github.com/microsoft/TypeScript", "http_status": 200, - "open_issues": 5476, - "pushed_at": "2026-03-02T00:55:04Z", + "open_issues": 5498, + "pushed_at": "2026-03-20T01:24:15Z", "reason": "", "repo": "microsoft/TypeScript", - "stars": 107995, - "updated_at": "2026-03-02T11:50:12Z", + "stars": 108220, + "updated_at": "2026-03-21T05:04:21Z", "verified": true } ], @@ -1572,22 +1572,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/codex-cli-tutorial/index.md", + "index_path": "tutorials/codex-cli-tutorial/README.md", "primary_repo": "openai/codex", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8328, + "forks": 8904, "html_url": "https://github.com/openai/codex", "http_status": 200, - "open_issues": 1442, - "pushed_at": "2026-03-02T16:34:01Z", + "open_issues": 2124, + "pushed_at": "2026-03-21T05:35:30Z", "reason": "", "repo": "openai/codex", - "stars": 62666, - "updated_at": "2026-03-02T16:31:35Z", + "stars": 66635, + "updated_at": "2026-03-21T05:46:23Z", "verified": true } ], @@ -1600,22 +1600,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/comfyui-tutorial/index.md", + "index_path": "tutorials/comfyui-tutorial/README.md", "primary_repo": "comfyanonymous/ComfyUI", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 11978, + "forks": 12254, "html_url": "https://github.com/Comfy-Org/ComfyUI", "http_status": 200, - "open_issues": 3781, - "pushed_at": "2026-03-02T13:14:30Z", + "open_issues": 3859, + "pushed_at": "2026-03-21T03:15:53Z", "reason": "", "repo": "comfyanonymous/ComfyUI", - "stars": 104688, - "updated_at": "2026-03-02T16:30:36Z", + "stars": 106478, + "updated_at": "2026-03-21T05:28:34Z", "verified": true } ], @@ -1628,22 +1628,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/composio-tutorial/index.md", + "index_path": "tutorials/composio-tutorial/README.md", "primary_repo": "ComposioHQ/composio", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "next", - "forks": 4460, + "forks": 4485, "html_url": "https://github.com/ComposioHQ/composio", "http_status": 200, - "open_issues": 54, - "pushed_at": "2026-03-02T10:14:04Z", + "open_issues": 74, + "pushed_at": "2026-03-21T01:56:44Z", "reason": "", "repo": "ComposioHQ/composio", - "stars": 27244, - "updated_at": "2026-03-02T16:13:20Z", + "stars": 27455, + "updated_at": "2026-03-21T05:37:45Z", "verified": true } ], @@ -1656,22 +1656,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/compound-engineering-plugin-tutorial/index.md", + "index_path": "tutorials/compound-engineering-plugin-tutorial/README.md", "primary_repo": "EveryInc/compound-engineering-plugin", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 776, + "forks": 858, "html_url": "https://github.com/EveryInc/compound-engineering-plugin", "http_status": 200, - "open_issues": 39, - "pushed_at": "2026-03-01T23:50:47Z", + "open_issues": 50, + "pushed_at": "2026-03-21T05:29:35Z", "reason": "", "repo": "EveryInc/compound-engineering-plugin", - "stars": 9735, - "updated_at": "2026-03-02T16:30:03Z", + "stars": 10716, + "updated_at": "2026-03-21T05:29:15Z", "verified": true } ], @@ -1684,22 +1684,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/context7-tutorial/index.md", + "index_path": "tutorials/context7-tutorial/README.md", "primary_repo": "upstash/context7", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 2243, + "forks": 2356, "html_url": "https://github.com/upstash/context7", "http_status": 200, - "open_issues": 151, - "pushed_at": "2026-03-01T10:38:06Z", + "open_issues": 168, + "pushed_at": "2026-03-21T00:29:26Z", "reason": "", "repo": "upstash/context7", - "stars": 47419, - "updated_at": "2026-03-02T16:14:38Z", + "stars": 49957, + "updated_at": "2026-03-21T05:46:05Z", "verified": true } ], @@ -1712,22 +1712,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/continue-tutorial/index.md", + "index_path": "tutorials/continue-tutorial/README.md", "primary_repo": "continuedev/continue", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 4211, + "forks": 4279, "html_url": "https://github.com/continuedev/continue", "http_status": 200, - "open_issues": 1034, - "pushed_at": "2026-03-02T09:29:21Z", + "open_issues": 899, + "pushed_at": "2026-03-21T01:31:13Z", "reason": "", "repo": "continuedev/continue", - "stars": 31600, - "updated_at": "2026-03-02T15:32:26Z", + "stars": 31957, + "updated_at": "2026-03-21T02:02:30Z", "verified": true } ], @@ -1740,22 +1740,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/copilot-cli-tutorial/index.md", + "index_path": "tutorials/copilot-cli-tutorial/README.md", "primary_repo": "github/copilot-cli", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1231, + "forks": 1290, "html_url": "https://github.com/github/copilot-cli", "http_status": 200, - "open_issues": 922, - "pushed_at": "2026-03-02T10:55:07Z", + "open_issues": 1224, + "pushed_at": "2026-03-20T16:57:48Z", "reason": "", "repo": "github/copilot-cli", - "stars": 8900, - "updated_at": "2026-03-02T16:02:24Z", + "stars": 9481, + "updated_at": "2026-03-21T05:23:52Z", "verified": true } ], @@ -1768,22 +1768,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/copilotkit-tutorial/index.md", + "index_path": "tutorials/copilotkit-tutorial/README.md", "primary_repo": "CopilotKit/CopilotKit", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3790, + "forks": 3844, "html_url": "https://github.com/CopilotKit/CopilotKit", "http_status": 200, - "open_issues": 597, - "pushed_at": "2026-03-02T16:32:21Z", + "open_issues": 594, + "pushed_at": "2026-03-20T23:42:59Z", "reason": "", "repo": "CopilotKit/CopilotKit", - "stars": 29121, - "updated_at": "2026-03-02T16:30:35Z", + "stars": 29617, + "updated_at": "2026-03-21T03:36:36Z", "verified": true } ], @@ -1796,7 +1796,7 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/create-python-server-tutorial/index.md", + "index_path": "tutorials/create-python-server-tutorial/README.md", "primary_repo": "modelcontextprotocol/create-python-server", "primary_repo_verified": true, "repositories": [ @@ -1824,14 +1824,14 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/create-typescript-server-tutorial/index.md", + "index_path": "tutorials/create-typescript-server-tutorial/README.md", "primary_repo": "modelcontextprotocol/create-typescript-server", "primary_repo_verified": true, "repositories": [ { "archived": true, "default_branch": "main", - "forks": 66, + "forks": 65, "html_url": "https://github.com/modelcontextprotocol/create-typescript-server", "http_status": 200, "open_issues": 4, @@ -1852,22 +1852,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/crewai-tutorial/index.md", + "index_path": "tutorials/crewai-tutorial/README.md", "primary_repo": "crewAIInc/crewAI", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 6037, + "forks": 6314, "html_url": "https://github.com/crewAIInc/crewAI", "http_status": 200, - "open_issues": 364, - "pushed_at": "2026-03-02T14:27:57Z", + "open_issues": 432, + "pushed_at": "2026-03-20T21:42:29Z", "reason": "", "repo": "crewAIInc/crewAI", - "stars": 44979, - "updated_at": "2026-03-02T16:23:13Z", + "stars": 46708, + "updated_at": "2026-03-21T05:43:47Z", "verified": true } ], @@ -1880,22 +1880,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/crush-tutorial/index.md", + "index_path": "tutorials/crush-tutorial/README.md", "primary_repo": "charmbracelet/crush", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1284, + "forks": 1372, "html_url": "https://github.com/charmbracelet/crush", "http_status": 200, - "open_issues": 340, - "pushed_at": "2026-03-02T13:36:45Z", + "open_issues": 348, + "pushed_at": "2026-03-21T03:49:21Z", "reason": "", "repo": "charmbracelet/crush", - "stars": 20729, - "updated_at": "2026-03-02T16:02:43Z", + "stars": 21742, + "updated_at": "2026-03-21T05:43:01Z", "verified": true } ], @@ -1908,22 +1908,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/daytona-tutorial/index.md", + "index_path": "tutorials/daytona-tutorial/README.md", "primary_repo": "daytonaio/daytona", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5076, + "forks": 5239, "html_url": "https://github.com/daytonaio/daytona", "http_status": 200, - "open_issues": 329, - "pushed_at": "2026-03-02T16:21:40Z", + "open_issues": 335, + "pushed_at": "2026-03-20T15:29:30Z", "reason": "", "repo": "daytonaio/daytona", - "stars": 61615, - "updated_at": "2026-03-02T16:32:20Z", + "stars": 68595, + "updated_at": "2026-03-21T05:43:55Z", "verified": true } ], @@ -1936,22 +1936,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/deer-flow-tutorial/index.md", + "index_path": "tutorials/deer-flow-tutorial/README.md", "primary_repo": "bytedance/deer-flow", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2777, + "forks": 3892, "html_url": "https://github.com/bytedance/deer-flow", "http_status": 200, - "open_issues": 221, - "pushed_at": "2026-03-02T13:02:03Z", + "open_issues": 272, + "pushed_at": "2026-03-21T02:38:20Z", "reason": "", "repo": "bytedance/deer-flow", - "stars": 23410, - "updated_at": "2026-03-02T16:34:14Z", + "stars": 32094, + "updated_at": "2026-03-21T05:43:29Z", "verified": true } ], @@ -1964,22 +1964,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/devika-tutorial/index.md", + "index_path": "tutorials/devika-tutorial/README.md", "primary_repo": "stitionai/devika", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2588, + "forks": 2590, "html_url": "https://github.com/stitionai/devika", "http_status": 200, "open_issues": 187, "pushed_at": "2025-09-25T08:47:36Z", "reason": "", "repo": "stitionai/devika", - "stars": 19482, - "updated_at": "2026-03-02T15:57:44Z", + "stars": 19499, + "updated_at": "2026-03-20T21:23:35Z", "verified": true } ], @@ -1992,22 +1992,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/dify-platform-deep-dive/index.md", + "index_path": "tutorials/dify-platform-deep-dive/README.md", "primary_repo": "langgenius/dify", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 20384, + "forks": 20844, "html_url": "https://github.com/langgenius/dify", "http_status": 200, - "open_issues": 784, - "pushed_at": "2026-03-02T15:58:37Z", + "open_issues": 804, + "pushed_at": "2026-03-21T05:23:11Z", "reason": "", "repo": "langgenius/dify", - "stars": 130930, - "updated_at": "2026-03-02T16:28:54Z", + "stars": 133770, + "updated_at": "2026-03-21T05:37:25Z", "verified": true } ], @@ -2020,22 +2020,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/dspy-tutorial/index.md", + "index_path": "tutorials/dspy-tutorial/README.md", "primary_repo": "stanfordnlp/dspy", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2664, + "forks": 2720, "html_url": "https://github.com/stanfordnlp/dspy", "http_status": 200, - "open_issues": 484, - "pushed_at": "2026-03-02T15:59:28Z", + "open_issues": 460, + "pushed_at": "2026-03-20T18:52:04Z", "reason": "", "repo": "stanfordnlp/dspy", - "stars": 32484, - "updated_at": "2026-03-02T15:59:39Z", + "stars": 32972, + "updated_at": "2026-03-21T05:44:17Z", "verified": true } ], @@ -2048,22 +2048,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/dyad-tutorial/index.md", + "index_path": "tutorials/dyad-tutorial/README.md", "primary_repo": "dyad-sh/dyad", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2255, + "forks": 2299, "html_url": "https://github.com/dyad-sh/dyad", "http_status": 200, - "open_issues": 259, - "pushed_at": "2026-02-28T00:16:55Z", + "open_issues": 275, + "pushed_at": "2026-03-20T22:42:21Z", "reason": "", "repo": "dyad-sh/dyad", - "stars": 19786, - "updated_at": "2026-03-02T09:27:42Z", + "stars": 19926, + "updated_at": "2026-03-21T02:23:27Z", "verified": true } ], @@ -2076,22 +2076,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/elizaos-tutorial/index.md", + "index_path": "tutorials/elizaos-tutorial/README.md", "primary_repo": "elizaOS/eliza", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "develop", - "forks": 5438, + "forks": 5460, "html_url": "https://github.com/elizaOS/eliza", "http_status": 200, - "open_issues": 141, - "pushed_at": "2026-02-27T06:50:33Z", + "open_issues": 123, + "pushed_at": "2026-03-21T02:21:59Z", "reason": "", "repo": "elizaOS/eliza", - "stars": 17657, - "updated_at": "2026-03-02T15:18:59Z", + "stars": 17854, + "updated_at": "2026-03-21T05:40:21Z", "verified": true } ], @@ -2104,22 +2104,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/everything-claude-code-tutorial/index.md", + "index_path": "tutorials/everything-claude-code-tutorial/README.md", "primary_repo": "affaan-m/everything-claude-code", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 7037, + "forks": 11994, "html_url": "https://github.com/affaan-m/everything-claude-code", "http_status": 200, - "open_issues": 24, - "pushed_at": "2026-03-01T20:07:13Z", + "open_issues": 32, + "pushed_at": "2026-03-21T03:40:14Z", "reason": "", "repo": "affaan-m/everything-claude-code", - "stars": 57024, - "updated_at": "2026-03-02T16:33:16Z", + "stars": 91327, + "updated_at": "2026-03-21T05:47:40Z", "verified": true } ], @@ -2132,36 +2132,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/fabric-tutorial/index.md", + "index_path": "tutorials/fabric-tutorial/README.md", "primary_repo": "danielmiessler/fabric", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3936, + "forks": 4003, "html_url": "https://github.com/danielmiessler/Fabric", "http_status": 200, - "open_issues": 22, - "pushed_at": "2026-03-02T14:34:55Z", + "open_issues": 26, + "pushed_at": "2026-03-19T18:02:27Z", "reason": "", "repo": "danielmiessler/fabric", - "stars": 39425, - "updated_at": "2026-03-02T16:13:38Z", + "stars": 40076, + "updated_at": "2026-03-21T05:41:21Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 3936, + "forks": 4003, "html_url": "https://github.com/danielmiessler/Fabric", "http_status": 200, - "open_issues": 22, - "pushed_at": "2026-03-02T14:34:55Z", + "open_issues": 26, + "pushed_at": "2026-03-19T18:02:27Z", "reason": "", "repo": "danielmiessler/Fabric", - "stars": 39425, - "updated_at": "2026-03-02T16:13:38Z", + "stars": 40076, + "updated_at": "2026-03-21T05:41:21Z", "verified": true } ], @@ -2175,22 +2175,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/fastmcp-tutorial/index.md", + "index_path": "tutorials/fastmcp-tutorial/README.md", "primary_repo": "jlowin/fastmcp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1788, + "forks": 1833, "html_url": "https://github.com/PrefectHQ/fastmcp", "http_status": 200, - "open_issues": 250, - "pushed_at": "2026-03-02T16:29:33Z", + "open_issues": 224, + "pushed_at": "2026-03-20T20:46:16Z", "reason": "", "repo": "jlowin/fastmcp", - "stars": 23290, - "updated_at": "2026-03-02T16:32:32Z", + "stars": 23860, + "updated_at": "2026-03-21T05:18:43Z", "verified": true } ], @@ -2203,22 +2203,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/figma-context-mcp-tutorial/index.md", + "index_path": "tutorials/figma-context-mcp-tutorial/README.md", "primary_repo": "GLips/Figma-Context-MCP", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1060, + "forks": 1093, "html_url": "https://github.com/GLips/Figma-Context-MCP", "http_status": 200, - "open_issues": 43, - "pushed_at": "2026-02-19T07:31:04Z", + "open_issues": 33, + "pushed_at": "2026-03-20T15:23:44Z", "reason": "", "repo": "GLips/Figma-Context-MCP", - "stars": 13337, - "updated_at": "2026-03-02T16:22:51Z", + "stars": 13828, + "updated_at": "2026-03-21T05:39:34Z", "verified": true } ], @@ -2231,22 +2231,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/firecrawl-mcp-server-tutorial/index.md", + "index_path": "tutorials/firecrawl-mcp-server-tutorial/README.md", "primary_repo": "firecrawl/firecrawl-mcp-server", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 630, + "forks": 651, "html_url": "https://github.com/firecrawl/firecrawl-mcp-server", "http_status": 200, - "open_issues": 78, - "pushed_at": "2026-02-26T22:39:43Z", + "open_issues": 85, + "pushed_at": "2026-03-13T17:06:11Z", "reason": "", "repo": "firecrawl/firecrawl-mcp-server", - "stars": 5634, - "updated_at": "2026-03-02T16:06:09Z", + "stars": 5813, + "updated_at": "2026-03-21T01:15:18Z", "verified": true } ], @@ -2259,36 +2259,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/firecrawl-tutorial/index.md", + "index_path": "tutorials/firecrawl-tutorial/README.md", "primary_repo": "mendableai/firecrawl", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 6203, + "forks": 6533, "html_url": "https://github.com/firecrawl/firecrawl", "http_status": 200, - "open_issues": 199, - "pushed_at": "2026-03-02T16:05:31Z", + "open_issues": 227, + "pushed_at": "2026-03-21T04:36:43Z", "reason": "", "repo": "mendableai/firecrawl", - "stars": 87358, - "updated_at": "2026-03-02T16:35:11Z", + "stars": 95811, + "updated_at": "2026-03-21T05:47:02Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 6203, + "forks": 6533, "html_url": "https://github.com/firecrawl/firecrawl", "http_status": 200, - "open_issues": 199, - "pushed_at": "2026-03-02T16:05:31Z", + "open_issues": 227, + "pushed_at": "2026-03-21T04:36:43Z", "reason": "", "repo": "firecrawl/firecrawl", - "stars": 87358, - "updated_at": "2026-03-02T16:35:11Z", + "stars": 95811, + "updated_at": "2026-03-21T05:47:02Z", "verified": true } ], @@ -2302,7 +2302,7 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/fireproof-tutorial/index.md", + "index_path": "tutorials/fireproof-tutorial/README.md", "primary_repo": "fireproof-storage/fireproof", "primary_repo_verified": true, "repositories": [ @@ -2312,12 +2312,12 @@ "forks": 56, "html_url": "https://github.com/fireproof-storage/fireproof", "http_status": 200, - "open_issues": 112, - "pushed_at": "2026-03-02T06:09:29Z", + "open_issues": 104, + "pushed_at": "2026-03-20T17:19:50Z", "reason": "", "repo": "fireproof-storage/fireproof", - "stars": 950, - "updated_at": "2026-03-01T11:21:19Z", + "stars": 954, + "updated_at": "2026-03-20T17:17:58Z", "verified": true } ], @@ -2330,22 +2330,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/flowise-llm-orchestration/index.md", + "index_path": "tutorials/flowise-llm-orchestration/README.md", "primary_repo": "FlowiseAI/Flowise", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 23769, + "forks": 23977, "html_url": "https://github.com/FlowiseAI/Flowise", "http_status": 200, - "open_issues": 782, - "pushed_at": "2026-03-02T07:18:14Z", + "open_issues": 806, + "pushed_at": "2026-03-20T23:36:07Z", "reason": "", "repo": "FlowiseAI/Flowise", - "stars": 49473, - "updated_at": "2026-03-02T15:32:44Z", + "stars": 50933, + "updated_at": "2026-03-21T05:28:07Z", "verified": true } ], @@ -2358,22 +2358,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/gemini-cli-tutorial/index.md", + "index_path": "tutorials/gemini-cli-tutorial/README.md", "primary_repo": "google-gemini/gemini-cli", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 11816, + "forks": 12466, "html_url": "https://github.com/google-gemini/gemini-cli", "http_status": 200, - "open_issues": 2501, - "pushed_at": "2026-03-02T16:15:35Z", + "open_issues": 3078, + "pushed_at": "2026-03-21T05:31:59Z", "reason": "", "repo": "google-gemini/gemini-cli", - "stars": 96224, - "updated_at": "2026-03-02T16:02:08Z", + "stars": 98524, + "updated_at": "2026-03-21T05:32:02Z", "verified": true } ], @@ -2386,22 +2386,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/genai-toolbox-tutorial/index.md", + "index_path": "tutorials/genai-toolbox-tutorial/README.md", "primary_repo": "googleapis/genai-toolbox", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1242, + "forks": 1275, "html_url": "https://github.com/googleapis/genai-toolbox", "http_status": 200, - "open_issues": 160, - "pushed_at": "2026-03-02T16:33:23Z", + "open_issues": 202, + "pushed_at": "2026-03-20T23:49:05Z", "reason": "", "repo": "googleapis/genai-toolbox", - "stars": 13234, - "updated_at": "2026-03-02T16:25:43Z", + "stars": 13480, + "updated_at": "2026-03-21T04:04:09Z", "verified": true } ], @@ -2414,22 +2414,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/github-mcp-server-tutorial/index.md", + "index_path": "tutorials/github-mcp-server-tutorial/README.md", "primary_repo": "github/github-mcp-server", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3664, + "forks": 3781, "html_url": "https://github.com/github/github-mcp-server", "http_status": 200, - "open_issues": 303, - "pushed_at": "2026-03-02T10:57:21Z", + "open_issues": 313, + "pushed_at": "2026-03-19T12:47:46Z", "reason": "", "repo": "github/github-mcp-server", - "stars": 27389, - "updated_at": "2026-03-02T16:26:19Z", + "stars": 28104, + "updated_at": "2026-03-21T05:43:35Z", "verified": true } ], @@ -2442,22 +2442,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/goose-tutorial/index.md", + "index_path": "tutorials/goose-tutorial/README.md", "primary_repo": "block/goose", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2924, + "forks": 3092, "html_url": "https://github.com/block/goose", "http_status": 200, - "open_issues": 361, - "pushed_at": "2026-03-02T16:31:17Z", + "open_issues": 313, + "pushed_at": "2026-03-21T05:34:33Z", "reason": "", "repo": "block/goose", - "stars": 32134, - "updated_at": "2026-03-02T16:32:55Z", + "stars": 33346, + "updated_at": "2026-03-21T05:41:51Z", "verified": true } ], @@ -2470,22 +2470,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/gpt-oss-tutorial/index.md", + "index_path": "tutorials/gpt-oss-tutorial/README.md", "primary_repo": "karpathy/nanoGPT", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 9150, + "forks": 9416, "html_url": "https://github.com/karpathy/nanoGPT", "http_status": 200, - "open_issues": 333, + "open_issues": 340, "pushed_at": "2025-11-12T19:52:34Z", "reason": "", "repo": "karpathy/nanoGPT", - "stars": 54037, - "updated_at": "2026-03-02T16:12:38Z", + "stars": 55291, + "updated_at": "2026-03-21T05:20:21Z", "verified": true }, { @@ -2498,50 +2498,50 @@ "pushed_at": "2026-02-03T00:16:14Z", "reason": "", "repo": "EleutherAI/gpt-neox", - "stars": 7398, - "updated_at": "2026-03-02T11:57:37Z", + "stars": 7400, + "updated_at": "2026-03-18T11:44:18Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 3138, + "forks": 3165, "html_url": "https://github.com/karpathy/minGPT", "http_status": 200, "open_issues": 81, "pushed_at": "2024-08-15T04:09:40Z", "reason": "", "repo": "karpathy/minGPT", - "stars": 23761, - "updated_at": "2026-03-02T16:23:01Z", + "stars": 23949, + "updated_at": "2026-03-21T05:07:21Z", "verified": true }, { "archived": true, "default_branch": "master", - "forks": 964, + "forks": 963, "html_url": "https://github.com/EleutherAI/gpt-neo", "http_status": 200, "open_issues": 15, "pushed_at": "2022-02-25T06:27:12Z", "reason": "", "repo": "EleutherAI/gpt-neo", - "stars": 8288, - "updated_at": "2026-02-25T08:30:28Z", + "stars": 8282, + "updated_at": "2026-03-20T11:24:05Z", "verified": true }, { "archived": false, "default_branch": "master", - "forks": 886, + "forks": 885, "html_url": "https://github.com/kingoflolz/mesh-transformer-jax", "http_status": 200, - "open_issues": 48, + "open_issues": 49, "pushed_at": "2023-01-21T00:09:29Z", "reason": "", "repo": "kingoflolz/mesh-transformer-jax", - "stars": 6363, - "updated_at": "2026-03-01T22:00:29Z", + "stars": 6362, + "updated_at": "2026-03-20T02:17:41Z", "verified": true } ], @@ -2558,22 +2558,22 @@ "verified_repo_count": 5 }, { - "index_path": "tutorials/gptme-tutorial/index.md", + "index_path": "tutorials/gptme-tutorial/README.md", "primary_repo": "gptme/gptme", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 358, + "forks": 365, "html_url": "https://github.com/gptme/gptme", "http_status": 200, - "open_issues": 27, - "pushed_at": "2026-03-02T16:17:23Z", + "open_issues": 29, + "pushed_at": "2026-03-21T04:01:38Z", "reason": "", "repo": "gptme/gptme", - "stars": 4208, - "updated_at": "2026-03-02T16:15:12Z", + "stars": 4237, + "updated_at": "2026-03-21T05:01:31Z", "verified": true } ], @@ -2586,22 +2586,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/hapi-tutorial/index.md", + "index_path": "tutorials/hapi-tutorial/README.md", "primary_repo": "tiann/hapi", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 197, + "forks": 295, "html_url": "https://github.com/tiann/hapi", "http_status": 200, - "open_issues": 30, - "pushed_at": "2026-03-02T05:11:09Z", + "open_issues": 61, + "pushed_at": "2026-03-20T10:45:18Z", "reason": "", "repo": "tiann/hapi", - "stars": 2008, - "updated_at": "2026-03-02T16:22:03Z", + "stars": 2972, + "updated_at": "2026-03-21T05:01:25Z", "verified": true } ], @@ -2614,22 +2614,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/haystack-tutorial/index.md", + "index_path": "tutorials/haystack-tutorial/README.md", "primary_repo": "deepset-ai/haystack", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2629, + "forks": 2668, "html_url": "https://github.com/deepset-ai/haystack", "http_status": 200, - "open_issues": 111, - "pushed_at": "2026-03-02T15:33:42Z", + "open_issues": 99, + "pushed_at": "2026-03-20T17:30:51Z", "reason": "", "repo": "deepset-ai/haystack", - "stars": 24372, - "updated_at": "2026-03-02T15:35:40Z", + "stars": 24571, + "updated_at": "2026-03-21T05:35:31Z", "verified": true } ], @@ -2642,22 +2642,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/huggingface-tutorial/index.md", + "index_path": "tutorials/huggingface-tutorial/README.md", "primary_repo": "huggingface/transformers", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 32265, + "forks": 32554, "html_url": "https://github.com/huggingface/transformers", "http_status": 200, - "open_issues": 2276, - "pushed_at": "2026-03-02T16:33:41Z", + "open_issues": 2282, + "pushed_at": "2026-03-20T22:40:40Z", "reason": "", "repo": "huggingface/transformers", - "stars": 157266, - "updated_at": "2026-03-02T16:31:15Z", + "stars": 158154, + "updated_at": "2026-03-21T04:52:07Z", "verified": true } ], @@ -2670,22 +2670,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/humanlayer-tutorial/index.md", + "index_path": "tutorials/humanlayer-tutorial/README.md", "primary_repo": "humanlayer/humanlayer", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 818, + "forks": 854, "html_url": "https://github.com/humanlayer/humanlayer", "http_status": 200, - "open_issues": 75, - "pushed_at": "2026-02-27T14:32:05Z", + "open_issues": 85, + "pushed_at": "2026-03-07T22:34:40Z", "reason": "", "repo": "humanlayer/humanlayer", - "stars": 9607, - "updated_at": "2026-03-02T16:35:01Z", + "stars": 9948, + "updated_at": "2026-03-21T03:58:12Z", "verified": true } ], @@ -2698,22 +2698,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/instructor-tutorial/index.md", + "index_path": "tutorials/instructor-tutorial/README.md", "primary_repo": "instructor-ai/instructor", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 946, + "forks": 971, "html_url": "https://github.com/567-labs/instructor", "http_status": 200, - "open_issues": 57, - "pushed_at": "2026-02-25T21:57:37Z", + "open_issues": 100, + "pushed_at": "2026-03-19T21:57:59Z", "reason": "", "repo": "instructor-ai/instructor", - "stars": 12459, - "updated_at": "2026-03-02T15:00:35Z", + "stars": 12565, + "updated_at": "2026-03-21T03:40:58Z", "verified": true } ], @@ -2726,22 +2726,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/khoj-tutorial/index.md", + "index_path": "tutorials/khoj-tutorial/README.md", "primary_repo": "khoj-ai/khoj", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 1986, + "forks": 2073, "html_url": "https://github.com/khoj-ai/khoj", "http_status": 200, - "open_issues": 88, - "pushed_at": "2026-02-24T18:50:03Z", + "open_issues": 93, + "pushed_at": "2026-03-19T19:28:44Z", "reason": "", "repo": "khoj-ai/khoj", - "stars": 32773, - "updated_at": "2026-03-02T16:22:05Z", + "stars": 33529, + "updated_at": "2026-03-21T04:49:09Z", "verified": true } ], @@ -2754,22 +2754,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/kilocode-tutorial/index.md", + "index_path": "tutorials/kilocode-tutorial/README.md", "primary_repo": "Kilo-Org/kilocode", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2081, + "forks": 2193, "html_url": "https://github.com/Kilo-Org/kilocode", "http_status": 200, - "open_issues": 689, - "pushed_at": "2026-03-02T16:33:29Z", + "open_issues": 809, + "pushed_at": "2026-03-20T20:15:38Z", "reason": "", "repo": "Kilo-Org/kilocode", - "stars": 16117, - "updated_at": "2026-03-02T16:23:17Z", + "stars": 16995, + "updated_at": "2026-03-21T03:57:44Z", "verified": true } ], @@ -2782,22 +2782,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/kimi-cli-tutorial/index.md", + "index_path": "tutorials/kimi-cli-tutorial/README.md", "primary_repo": "MoonshotAI/kimi-cli", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 663, + "forks": 744, "html_url": "https://github.com/MoonshotAI/kimi-cli", "http_status": 200, - "open_issues": 137, - "pushed_at": "2026-03-02T08:25:23Z", + "open_issues": 237, + "pushed_at": "2026-03-20T07:12:33Z", "reason": "", "repo": "MoonshotAI/kimi-cli", - "stars": 6933, - "updated_at": "2026-03-02T15:58:55Z", + "stars": 7267, + "updated_at": "2026-03-21T05:47:34Z", "verified": true } ], @@ -2810,22 +2810,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/kiro-tutorial/index.md", + "index_path": "tutorials/kiro-tutorial/README.md", "primary_repo": "kirodotdev/Kiro", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 155, + "forks": 177, "html_url": "https://github.com/kirodotdev/Kiro", "http_status": 200, - "open_issues": 2298, - "pushed_at": "2026-03-02T07:25:08Z", + "open_issues": 2406, + "pushed_at": "2026-03-20T18:46:03Z", "reason": "", "repo": "kirodotdev/Kiro", - "stars": 3097, - "updated_at": "2026-03-02T15:12:08Z", + "stars": 3244, + "updated_at": "2026-03-21T03:58:47Z", "verified": true } ], @@ -2838,22 +2838,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/kubernetes-operator-patterns/index.md", + "index_path": "tutorials/kubernetes-operator-patterns/README.md", "primary_repo": "operator-framework/operator-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 1777, + "forks": 1782, "html_url": "https://github.com/operator-framework/operator-sdk", "http_status": 200, - "open_issues": 71, - "pushed_at": "2026-03-02T13:41:01Z", + "open_issues": 55, + "pushed_at": "2026-03-19T17:00:45Z", "reason": "", "repo": "operator-framework/operator-sdk", - "stars": 7615, - "updated_at": "2026-03-02T13:41:09Z", + "stars": 7619, + "updated_at": "2026-03-19T18:56:14Z", "verified": true } ], @@ -2866,22 +2866,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/lancedb-tutorial/index.md", + "index_path": "tutorials/lancedb-tutorial/README.md", "primary_repo": "lancedb/lancedb", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 768, + "forks": 798, "html_url": "https://github.com/lancedb/lancedb", "http_status": 200, - "open_issues": 584, - "pushed_at": "2026-03-01T06:18:47Z", + "open_issues": 615, + "pushed_at": "2026-03-20T20:19:07Z", "reason": "", "repo": "lancedb/lancedb", - "stars": 9211, - "updated_at": "2026-03-02T16:24:39Z", + "stars": 9569, + "updated_at": "2026-03-21T02:25:52Z", "verified": true } ], @@ -2894,22 +2894,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/langchain-architecture-guide/index.md", + "index_path": "tutorials/langchain-architecture-guide/README.md", "primary_repo": "langchain-ai/langchain", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 21022, + "forks": 21495, "html_url": "https://github.com/langchain-ai/langchain", "http_status": 200, - "open_issues": 422, - "pushed_at": "2026-03-02T15:47:32Z", + "open_issues": 482, + "pushed_at": "2026-03-20T20:46:08Z", "reason": "", "repo": "langchain-ai/langchain", - "stars": 127956, - "updated_at": "2026-03-02T16:35:10Z", + "stars": 130416, + "updated_at": "2026-03-21T05:25:32Z", "verified": true } ], @@ -2922,22 +2922,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/langchain-tutorial/index.md", + "index_path": "tutorials/langchain-tutorial/README.md", "primary_repo": "langchain-ai/langchain", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 21022, + "forks": 21495, "html_url": "https://github.com/langchain-ai/langchain", "http_status": 200, - "open_issues": 422, - "pushed_at": "2026-03-02T15:47:32Z", + "open_issues": 482, + "pushed_at": "2026-03-20T20:46:08Z", "reason": "", "repo": "langchain-ai/langchain", - "stars": 127956, - "updated_at": "2026-03-02T16:35:10Z", + "stars": 130416, + "updated_at": "2026-03-21T05:25:32Z", "verified": true } ], @@ -2950,22 +2950,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/langflow-tutorial/index.md", + "index_path": "tutorials/langflow-tutorial/README.md", "primary_repo": "langflow-ai/langflow", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8503, + "forks": 8623, "html_url": "https://github.com/langflow-ai/langflow", "http_status": 200, - "open_issues": 1085, - "pushed_at": "2026-03-02T16:24:09Z", + "open_issues": 894, + "pushed_at": "2026-03-21T00:34:28Z", "reason": "", "repo": "langflow-ai/langflow", - "stars": 145194, - "updated_at": "2026-03-02T16:34:45Z", + "stars": 145966, + "updated_at": "2026-03-21T05:25:09Z", "verified": true } ], @@ -2978,22 +2978,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/langfuse-tutorial/index.md", + "index_path": "tutorials/langfuse-tutorial/README.md", "primary_repo": "langfuse/langfuse", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2247, + "forks": 2378, "html_url": "https://github.com/langfuse/langfuse", "http_status": 200, - "open_issues": 550, - "pushed_at": "2026-03-02T16:33:27Z", + "open_issues": 588, + "pushed_at": "2026-03-20T23:04:33Z", "reason": "", "repo": "langfuse/langfuse", - "stars": 22507, - "updated_at": "2026-03-02T16:33:30Z", + "stars": 23487, + "updated_at": "2026-03-21T03:23:31Z", "verified": true } ], @@ -3006,22 +3006,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/langgraph-tutorial/index.md", + "index_path": "tutorials/langgraph-tutorial/README.md", "primary_repo": "langchain-ai/langgraph", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 4430, + "forks": 4655, "html_url": "https://github.com/langchain-ai/langgraph", "http_status": 200, - "open_issues": 374, - "pushed_at": "2026-03-02T15:54:25Z", + "open_issues": 458, + "pushed_at": "2026-03-21T03:38:48Z", "reason": "", "repo": "langchain-ai/langgraph", - "stars": 25400, - "updated_at": "2026-03-02T16:25:22Z", + "stars": 27025, + "updated_at": "2026-03-21T05:45:56Z", "verified": true } ], @@ -3034,22 +3034,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/letta-tutorial/index.md", + "index_path": "tutorials/letta-tutorial/README.md", "primary_repo": "letta-ai/letta", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2235, + "forks": 2287, "html_url": "https://github.com/letta-ai/letta", "http_status": 200, - "open_issues": 75, - "pushed_at": "2026-02-24T19:02:50Z", + "open_issues": 87, + "pushed_at": "2026-03-16T01:40:58Z", "reason": "", "repo": "letta-ai/letta", - "stars": 21360, - "updated_at": "2026-03-02T14:36:59Z", + "stars": 21675, + "updated_at": "2026-03-21T00:37:34Z", "verified": true } ], @@ -3062,22 +3062,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/litellm-tutorial/index.md", + "index_path": "tutorials/litellm-tutorial/README.md", "primary_repo": "BerriAI/litellm", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 6083, + "forks": 6589, "html_url": "https://github.com/BerriAI/litellm", "http_status": 200, - "open_issues": 1636, - "pushed_at": "2026-03-02T14:18:03Z", + "open_issues": 1972, + "pushed_at": "2026-03-21T05:43:03Z", "reason": "", "repo": "BerriAI/litellm", - "stars": 37474, - "updated_at": "2026-03-02T16:32:00Z", + "stars": 39803, + "updated_at": "2026-03-21T05:39:03Z", "verified": true } ], @@ -3090,7 +3090,7 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/liveblocks-tutorial/index.md", + "index_path": "tutorials/liveblocks-tutorial/README.md", "primary_repo": "liveblocks/liveblocks", "primary_repo_verified": true, "repositories": [ @@ -3100,12 +3100,12 @@ "forks": 408, "html_url": "https://github.com/liveblocks/liveblocks", "http_status": 200, - "open_issues": 73, - "pushed_at": "2026-03-02T16:32:47Z", + "open_issues": 75, + "pushed_at": "2026-03-20T23:49:39Z", "reason": "", "repo": "liveblocks/liveblocks", - "stars": 4474, - "updated_at": "2026-03-02T11:13:38Z", + "stars": 4518, + "updated_at": "2026-03-21T05:42:06Z", "verified": true } ], @@ -3118,22 +3118,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/llama-cpp-tutorial/index.md", + "index_path": "tutorials/llama-cpp-tutorial/README.md", "primary_repo": "ggerganov/llama.cpp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 15176, + "forks": 15675, "html_url": "https://github.com/ggml-org/llama.cpp", "http_status": 200, - "open_issues": 1167, - "pushed_at": "2026-03-02T15:59:53Z", + "open_issues": 1288, + "pushed_at": "2026-03-21T04:46:00Z", "reason": "", "repo": "ggerganov/llama.cpp", - "stars": 96348, - "updated_at": "2026-03-02T16:17:36Z", + "stars": 98779, + "updated_at": "2026-03-21T05:47:23Z", "verified": true } ], @@ -3146,22 +3146,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/llama-factory-tutorial/index.md", + "index_path": "tutorials/llama-factory-tutorial/README.md", "primary_repo": "hiyouga/LLaMA-Factory", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8262, + "forks": 8389, "html_url": "https://github.com/hiyouga/LlamaFactory", "http_status": 200, - "open_issues": 912, - "pushed_at": "2026-03-02T03:10:50Z", + "open_issues": 931, + "pushed_at": "2026-03-20T08:50:12Z", "reason": "", "repo": "hiyouga/LLaMA-Factory", - "stars": 67754, - "updated_at": "2026-03-02T15:50:31Z", + "stars": 68815, + "updated_at": "2026-03-21T05:37:00Z", "verified": true } ], @@ -3174,22 +3174,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/llamaindex-tutorial/index.md", + "index_path": "tutorials/llamaindex-tutorial/README.md", "primary_repo": "run-llama/llama_index", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 6889, + "forks": 7058, "html_url": "https://github.com/run-llama/llama_index", "http_status": 200, - "open_issues": 285, - "pushed_at": "2026-03-02T11:38:31Z", + "open_issues": 264, + "pushed_at": "2026-03-20T19:32:25Z", "reason": "", "repo": "run-llama/llama_index", - "stars": 47305, - "updated_at": "2026-03-02T15:49:23Z", + "stars": 47826, + "updated_at": "2026-03-21T02:56:18Z", "verified": true } ], @@ -3202,22 +3202,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/lobechat-ai-platform/index.md", + "index_path": "tutorials/lobechat-ai-platform/README.md", "primary_repo": "lobehub/lobe-chat", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "canary", - "forks": 14706, + "forks": 14818, "html_url": "https://github.com/lobehub/lobehub", "http_status": 200, - "open_issues": 803, - "pushed_at": "2026-03-02T16:19:50Z", + "open_issues": 654, + "pushed_at": "2026-03-21T03:05:25Z", "reason": "", "repo": "lobehub/lobe-chat", - "stars": 72894, - "updated_at": "2026-03-02T16:10:50Z", + "stars": 74040, + "updated_at": "2026-03-21T05:47:19Z", "verified": true } ], @@ -3230,22 +3230,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/localai-tutorial/index.md", + "index_path": "tutorials/localai-tutorial/README.md", "primary_repo": "mudler/LocalAI", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 3612, + "forks": 3762, "html_url": "https://github.com/mudler/LocalAI", "http_status": 200, - "open_issues": 151, - "pushed_at": "2026-03-02T13:48:03Z", + "open_issues": 142, + "pushed_at": "2026-03-21T01:11:32Z", "reason": "", "repo": "mudler/LocalAI", - "stars": 43182, - "updated_at": "2026-03-02T15:09:27Z", + "stars": 44127, + "updated_at": "2026-03-21T05:09:42Z", "verified": true } ], @@ -3258,22 +3258,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/logseq-knowledge-management/index.md", + "index_path": "tutorials/logseq-knowledge-management/README.md", "primary_repo": "logseq/logseq", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 2470, + "forks": 2508, "html_url": "https://github.com/logseq/logseq", "http_status": 200, - "open_issues": 1030, - "pushed_at": "2026-03-02T14:40:28Z", + "open_issues": 1012, + "pushed_at": "2026-03-20T20:23:12Z", "reason": "", "repo": "logseq/logseq", - "stars": 41295, - "updated_at": "2026-03-02T15:56:18Z", + "stars": 41647, + "updated_at": "2026-03-21T04:06:14Z", "verified": true } ], @@ -3286,22 +3286,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mastra-tutorial/index.md", + "index_path": "tutorials/mastra-tutorial/README.md", "primary_repo": "mastra-ai/mastra", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1649, + "forks": 1765, "html_url": "https://github.com/mastra-ai/mastra", "http_status": 200, - "open_issues": 510, - "pushed_at": "2026-03-02T16:28:19Z", + "open_issues": 394, + "pushed_at": "2026-03-21T04:31:03Z", "reason": "", "repo": "mastra-ai/mastra", - "stars": 21606, - "updated_at": "2026-03-02T16:21:16Z", + "stars": 22178, + "updated_at": "2026-03-21T04:31:08Z", "verified": true } ], @@ -3314,22 +3314,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-chrome-tutorial/index.md", + "index_path": "tutorials/mcp-chrome-tutorial/README.md", "primary_repo": "hangwin/mcp-chrome", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 930, + "forks": 958, "html_url": "https://github.com/hangwin/mcp-chrome", "http_status": 200, - "open_issues": 173, + "open_issues": 177, "pushed_at": "2026-01-06T13:05:39Z", "reason": "", "repo": "hangwin/mcp-chrome", - "stars": 10573, - "updated_at": "2026-03-02T16:20:30Z", + "stars": 10856, + "updated_at": "2026-03-21T03:43:31Z", "verified": true } ], @@ -3342,22 +3342,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-csharp-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-csharp-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/csharp-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 645, + "forks": 664, "html_url": "https://github.com/modelcontextprotocol/csharp-sdk", "http_status": 200, - "open_issues": 123, - "pushed_at": "2026-03-02T14:41:02Z", + "open_issues": 150, + "pushed_at": "2026-03-21T02:24:12Z", "reason": "", "repo": "modelcontextprotocol/csharp-sdk", - "stars": 3978, - "updated_at": "2026-03-02T14:41:04Z", + "stars": 4115, + "updated_at": "2026-03-20T21:27:25Z", "verified": true } ], @@ -3370,22 +3370,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-docs-repo-tutorial/index.md", + "index_path": "tutorials/mcp-docs-repo-tutorial/README.md", "primary_repo": "modelcontextprotocol/docs", "primary_repo_verified": true, "repositories": [ { "archived": true, "default_branch": "main", - "forks": 278, + "forks": 279, "html_url": "https://github.com/modelcontextprotocol/docs", "http_status": 200, "open_issues": 77, "pushed_at": "2025-04-08T16:42:43Z", "reason": "", "repo": "modelcontextprotocol/docs", - "stars": 424, - "updated_at": "2026-02-25T17:20:41Z", + "stars": 428, + "updated_at": "2026-03-18T11:33:53Z", "verified": true } ], @@ -3398,22 +3398,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-ext-apps-tutorial/index.md", + "index_path": "tutorials/mcp-ext-apps-tutorial/README.md", "primary_repo": "modelcontextprotocol/ext-apps", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 194, + "forks": 227, "html_url": "https://github.com/modelcontextprotocol/ext-apps", "http_status": 200, "open_issues": 117, - "pushed_at": "2026-03-02T10:43:06Z", + "pushed_at": "2026-03-19T20:02:00Z", "reason": "", "repo": "modelcontextprotocol/ext-apps", - "stars": 1734, - "updated_at": "2026-03-02T16:16:50Z", + "stars": 1895, + "updated_at": "2026-03-21T04:30:23Z", "verified": true } ], @@ -3426,22 +3426,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-go-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-go-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/go-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 367, + "forks": 380, "html_url": "https://github.com/modelcontextprotocol/go-sdk", "http_status": 200, - "open_issues": 48, - "pushed_at": "2026-03-02T12:03:14Z", + "open_issues": 47, + "pushed_at": "2026-03-20T15:57:27Z", "reason": "", "repo": "modelcontextprotocol/go-sdk", - "stars": 3985, - "updated_at": "2026-03-02T13:38:21Z", + "stars": 4189, + "updated_at": "2026-03-21T05:31:23Z", "verified": true } ], @@ -3454,22 +3454,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-inspector-tutorial/index.md", + "index_path": "tutorials/mcp-inspector-tutorial/README.md", "primary_repo": "modelcontextprotocol/inspector", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1191, + "forks": 1222, "html_url": "https://github.com/modelcontextprotocol/inspector", "http_status": 200, - "open_issues": 188, - "pushed_at": "2026-02-27T16:02:49Z", + "open_issues": 203, + "pushed_at": "2026-03-18T23:56:53Z", "reason": "", "repo": "modelcontextprotocol/inspector", - "stars": 8868, - "updated_at": "2026-03-02T12:18:55Z", + "stars": 9142, + "updated_at": "2026-03-21T01:36:15Z", "verified": true } ], @@ -3482,22 +3482,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-java-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-java-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/java-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 821, + "forks": 840, "html_url": "https://github.com/modelcontextprotocol/java-sdk", "http_status": 200, - "open_issues": 246, - "pushed_at": "2026-03-02T16:08:18Z", + "open_issues": 269, + "pushed_at": "2026-03-13T14:56:34Z", "reason": "", "repo": "modelcontextprotocol/java-sdk", - "stars": 3212, - "updated_at": "2026-03-02T16:10:20Z", + "stars": 3289, + "updated_at": "2026-03-20T19:11:26Z", "verified": true } ], @@ -3510,22 +3510,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-kotlin-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-kotlin-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/kotlin-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 198, + "forks": 202, "html_url": "https://github.com/modelcontextprotocol/kotlin-sdk", "http_status": 200, - "open_issues": 119, - "pushed_at": "2026-03-02T16:01:29Z", + "open_issues": 120, + "pushed_at": "2026-03-20T17:07:34Z", "reason": "", "repo": "modelcontextprotocol/kotlin-sdk", - "stars": 1276, - "updated_at": "2026-03-02T16:00:51Z", + "stars": 1303, + "updated_at": "2026-03-20T17:07:37Z", "verified": true } ], @@ -3538,22 +3538,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-php-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-php-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/php-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 118, + "forks": 124, "html_url": "https://github.com/modelcontextprotocol/php-sdk", "http_status": 200, - "open_issues": 29, - "pushed_at": "2026-03-01T20:54:03Z", + "open_issues": 32, + "pushed_at": "2026-03-20T10:06:50Z", "reason": "", "repo": "modelcontextprotocol/php-sdk", - "stars": 1379, - "updated_at": "2026-03-01T23:31:21Z", + "stars": 1421, + "updated_at": "2026-03-20T06:54:37Z", "verified": true } ], @@ -3566,22 +3566,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-python-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-python-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/python-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3131, + "forks": 3193, "html_url": "https://github.com/modelcontextprotocol/python-sdk", "http_status": 200, - "open_issues": 409, - "pushed_at": "2026-03-02T13:57:24Z", + "open_issues": 405, + "pushed_at": "2026-03-20T18:18:18Z", "reason": "", "repo": "modelcontextprotocol/python-sdk", - "stars": 21916, - "updated_at": "2026-03-02T14:37:00Z", + "stars": 22234, + "updated_at": "2026-03-21T03:22:44Z", "verified": true } ], @@ -3594,22 +3594,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-quickstart-resources-tutorial/index.md", + "index_path": "tutorials/mcp-quickstart-resources-tutorial/README.md", "primary_repo": "modelcontextprotocol/quickstart-resources", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 579, + "forks": 599, "html_url": "https://github.com/modelcontextprotocol/quickstart-resources", "http_status": 200, - "open_issues": 15, - "pushed_at": "2026-02-28T14:58:27Z", + "open_issues": 13, + "pushed_at": "2026-03-19T12:45:42Z", "reason": "", "repo": "modelcontextprotocol/quickstart-resources", - "stars": 1007, - "updated_at": "2026-03-02T08:06:18Z", + "stars": 1033, + "updated_at": "2026-03-20T15:20:26Z", "verified": true } ], @@ -3622,22 +3622,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-registry-tutorial/index.md", + "index_path": "tutorials/mcp-registry-tutorial/README.md", "primary_repo": "modelcontextprotocol/registry", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 625, + "forks": 677, "html_url": "https://github.com/modelcontextprotocol/registry", "http_status": 200, - "open_issues": 147, - "pushed_at": "2026-03-01T14:35:50Z", + "open_issues": 151, + "pushed_at": "2026-03-20T23:34:57Z", "reason": "", "repo": "modelcontextprotocol/registry", - "stars": 6502, - "updated_at": "2026-03-02T04:16:32Z", + "stars": 6575, + "updated_at": "2026-03-21T05:47:16Z", "verified": true } ], @@ -3650,22 +3650,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-ruby-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-ruby-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/ruby-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 97, + "forks": 102, "html_url": "https://github.com/modelcontextprotocol/ruby-sdk", "http_status": 200, - "open_issues": 15, - "pushed_at": "2026-03-02T16:05:16Z", + "open_issues": 10, + "pushed_at": "2026-03-20T15:42:56Z", "reason": "", "repo": "modelcontextprotocol/ruby-sdk", - "stars": 739, - "updated_at": "2026-03-02T16:06:22Z", + "stars": 755, + "updated_at": "2026-03-20T15:43:01Z", "verified": true } ], @@ -3678,22 +3678,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-rust-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-rust-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/rust-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 470, + "forks": 481, "html_url": "https://github.com/modelcontextprotocol/rust-sdk", "http_status": 200, - "open_issues": 32, - "pushed_at": "2026-03-02T15:41:27Z", + "open_issues": 24, + "pushed_at": "2026-03-18T15:42:06Z", "reason": "", "repo": "modelcontextprotocol/rust-sdk", - "stars": 3086, - "updated_at": "2026-03-02T15:38:41Z", + "stars": 3204, + "updated_at": "2026-03-21T03:26:04Z", "verified": true } ], @@ -3706,22 +3706,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-servers-tutorial/index.md", + "index_path": "tutorials/mcp-servers-tutorial/README.md", "primary_repo": "modelcontextprotocol/servers", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 9721, + "forks": 9999, "html_url": "https://github.com/modelcontextprotocol/servers", "http_status": 200, - "open_issues": 407, - "pushed_at": "2026-02-28T21:17:22Z", + "open_issues": 545, + "pushed_at": "2026-03-17T14:21:11Z", "reason": "", "repo": "modelcontextprotocol/servers", - "stars": 79872, - "updated_at": "2026-03-02T16:06:05Z", + "stars": 81667, + "updated_at": "2026-03-21T05:24:24Z", "verified": true } ], @@ -3734,22 +3734,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-specification-tutorial/index.md", + "index_path": "tutorials/mcp-specification-tutorial/README.md", "primary_repo": "modelcontextprotocol/modelcontextprotocol", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1345, + "forks": 1393, "html_url": "https://github.com/modelcontextprotocol/modelcontextprotocol", "http_status": 200, - "open_issues": 284, - "pushed_at": "2026-03-02T13:19:51Z", + "open_issues": 227, + "pushed_at": "2026-03-20T17:59:34Z", "reason": "", "repo": "modelcontextprotocol/modelcontextprotocol", - "stars": 7358, - "updated_at": "2026-03-02T14:21:21Z", + "stars": 7566, + "updated_at": "2026-03-20T23:14:28Z", "verified": true } ], @@ -3762,22 +3762,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-swift-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-swift-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/swift-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 167, + "forks": 175, "html_url": "https://github.com/modelcontextprotocol/swift-sdk", "http_status": 200, - "open_issues": 53, - "pushed_at": "2026-02-26T14:39:01Z", + "open_issues": 55, + "pushed_at": "2026-03-13T16:51:38Z", "reason": "", "repo": "modelcontextprotocol/swift-sdk", - "stars": 1275, - "updated_at": "2026-03-02T14:55:35Z", + "stars": 1318, + "updated_at": "2026-03-21T00:37:39Z", "verified": true } ], @@ -3790,22 +3790,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-typescript-sdk-tutorial/index.md", + "index_path": "tutorials/mcp-typescript-sdk-tutorial/README.md", "primary_repo": "modelcontextprotocol/typescript-sdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1642, + "forks": 1692, "html_url": "https://github.com/modelcontextprotocol/typescript-sdk", "http_status": 200, - "open_issues": 326, - "pushed_at": "2026-03-02T12:15:16Z", + "open_issues": 382, + "pushed_at": "2026-03-21T04:31:50Z", "reason": "", "repo": "modelcontextprotocol/typescript-sdk", - "stars": 11725, - "updated_at": "2026-03-02T13:41:16Z", + "stars": 11906, + "updated_at": "2026-03-21T01:53:19Z", "verified": true } ], @@ -3818,22 +3818,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcp-use-tutorial/index.md", + "index_path": "tutorials/mcp-use-tutorial/README.md", "primary_repo": "mcp-use/mcp-use", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1148, + "forks": 1165, "html_url": "https://github.com/mcp-use/mcp-use", "http_status": 200, - "open_issues": 63, - "pushed_at": "2026-03-02T15:32:59Z", + "open_issues": 68, + "pushed_at": "2026-03-20T15:03:46Z", "reason": "", "repo": "mcp-use/mcp-use", - "stars": 9346, - "updated_at": "2026-03-02T15:47:53Z", + "stars": 9470, + "updated_at": "2026-03-21T04:18:56Z", "verified": true } ], @@ -3846,22 +3846,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mcpb-tutorial/index.md", + "index_path": "tutorials/mcpb-tutorial/README.md", "primary_repo": "modelcontextprotocol/mcpb", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 164, + "forks": 172, "html_url": "https://github.com/modelcontextprotocol/mcpb", "http_status": 200, - "open_issues": 87, - "pushed_at": "2026-02-18T21:01:51Z", + "open_issues": 60, + "pushed_at": "2026-03-20T10:38:35Z", "reason": "", "repo": "modelcontextprotocol/mcpb", - "stars": 1741, - "updated_at": "2026-03-02T05:46:09Z", + "stars": 1785, + "updated_at": "2026-03-20T21:25:15Z", "verified": true } ], @@ -3874,22 +3874,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/meilisearch-tutorial/index.md", + "index_path": "tutorials/meilisearch-tutorial/README.md", "primary_repo": "meilisearch/meilisearch", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2395, + "forks": 2436, "html_url": "https://github.com/meilisearch/meilisearch", "http_status": 200, - "open_issues": 306, - "pushed_at": "2026-03-02T16:21:33Z", + "open_issues": 282, + "pushed_at": "2026-03-21T03:27:15Z", "reason": "", "repo": "meilisearch/meilisearch", - "stars": 56151, - "updated_at": "2026-03-02T16:22:22Z", + "stars": 56603, + "updated_at": "2026-03-21T05:35:00Z", "verified": true } ], @@ -3902,22 +3902,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mem0-tutorial/index.md", + "index_path": "tutorials/mem0-tutorial/README.md", "primary_repo": "mem0ai/mem0", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5393, + "forks": 5638, "html_url": "https://github.com/mem0ai/mem0", "http_status": 200, - "open_issues": 810, - "pushed_at": "2026-03-02T07:54:35Z", + "open_issues": 609, + "pushed_at": "2026-03-21T00:10:06Z", "reason": "", "repo": "mem0ai/mem0", - "stars": 48444, - "updated_at": "2026-03-02T16:17:44Z", + "stars": 50562, + "updated_at": "2026-03-21T05:44:17Z", "verified": true } ], @@ -3930,22 +3930,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mini-swe-agent-tutorial/index.md", + "index_path": "tutorials/mini-swe-agent-tutorial/README.md", "primary_repo": "SWE-agent/mini-swe-agent", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 405, + "forks": 470, "html_url": "https://github.com/SWE-agent/mini-swe-agent", "http_status": 200, - "open_issues": 13, - "pushed_at": "2026-03-02T16:18:14Z", + "open_issues": 18, + "pushed_at": "2026-03-16T22:43:14Z", "reason": "", "repo": "SWE-agent/mini-swe-agent", - "stars": 3063, - "updated_at": "2026-03-02T16:18:37Z", + "stars": 3418, + "updated_at": "2026-03-21T03:59:23Z", "verified": true } ], @@ -3958,22 +3958,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/mistral-vibe-tutorial/index.md", + "index_path": "tutorials/mistral-vibe-tutorial/README.md", "primary_repo": "mistralai/mistral-vibe", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 347, + "forks": 377, "html_url": "https://github.com/mistralai/mistral-vibe", "http_status": 200, - "open_issues": 135, - "pushed_at": "2026-02-27T16:34:26Z", + "open_issues": 172, + "pushed_at": "2026-03-18T14:43:25Z", "reason": "", "repo": "mistralai/mistral-vibe", - "stars": 3267, - "updated_at": "2026-03-02T16:02:21Z", + "stars": 3552, + "updated_at": "2026-03-21T04:16:21Z", "verified": true } ], @@ -3986,22 +3986,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/n8n-ai-tutorial/index.md", + "index_path": "tutorials/n8n-ai-tutorial/README.md", "primary_repo": "n8n-io/n8n", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 55341, + "forks": 55984, "html_url": "https://github.com/n8n-io/n8n", "http_status": 200, - "open_issues": 1411, - "pushed_at": "2026-03-02T16:34:18Z", + "open_issues": 1443, + "pushed_at": "2026-03-21T05:40:14Z", "reason": "", "repo": "n8n-io/n8n", - "stars": 177197, - "updated_at": "2026-03-02T16:22:44Z", + "stars": 180232, + "updated_at": "2026-03-21T05:45:30Z", "verified": true } ], @@ -4014,22 +4014,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/n8n-mcp-tutorial/index.md", + "index_path": "tutorials/n8n-mcp-tutorial/README.md", "primary_repo": "n8n-io/n8n", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 55341, + "forks": 55984, "html_url": "https://github.com/n8n-io/n8n", "http_status": 200, - "open_issues": 1411, - "pushed_at": "2026-03-02T16:34:18Z", + "open_issues": 1443, + "pushed_at": "2026-03-21T05:40:14Z", "reason": "", "repo": "n8n-io/n8n", - "stars": 177197, - "updated_at": "2026-03-02T16:22:44Z", + "stars": 180232, + "updated_at": "2026-03-21T05:45:30Z", "verified": true } ], @@ -4042,22 +4042,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/nanocoder-tutorial/index.md", + "index_path": "tutorials/nanocoder-tutorial/README.md", "primary_repo": "Nano-Collective/nanocoder", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 128, + "forks": 138, "html_url": "https://github.com/Nano-Collective/nanocoder", "http_status": 200, - "open_issues": 36, - "pushed_at": "2026-03-02T01:16:24Z", + "open_issues": 38, + "pushed_at": "2026-03-21T01:12:45Z", "reason": "", "repo": "Nano-Collective/nanocoder", - "stars": 1391, - "updated_at": "2026-03-02T16:31:45Z", + "stars": 1533, + "updated_at": "2026-03-21T05:35:38Z", "verified": true } ], @@ -4070,22 +4070,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/nocodb-database-platform/index.md", + "index_path": "tutorials/nocodb-database-platform/README.md", "primary_repo": "nocodb/nocodb", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "develop", - "forks": 4648, + "forks": 4673, "html_url": "https://github.com/nocodb/nocodb", "http_status": 200, - "open_issues": 619, - "pushed_at": "2026-03-02T11:41:19Z", + "open_issues": 644, + "pushed_at": "2026-03-21T05:45:23Z", "reason": "", "repo": "nocodb/nocodb", - "stars": 62298, - "updated_at": "2026-03-02T13:57:44Z", + "stars": 62504, + "updated_at": "2026-03-21T05:45:27Z", "verified": true } ], @@ -4098,22 +4098,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/obsidian-outliner-plugin/index.md", + "index_path": "tutorials/obsidian-outliner-plugin/README.md", "primary_repo": "vslinko/obsidian-outliner", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 74, + "forks": 75, "html_url": "https://github.com/vslinko/obsidian-outliner", "http_status": 200, "open_issues": 97, "pushed_at": "2026-02-24T20:41:05Z", "reason": "", "repo": "vslinko/obsidian-outliner", - "stars": 1272, - "updated_at": "2026-03-01T10:51:26Z", + "stars": 1278, + "updated_at": "2026-03-17T10:53:50Z", "verified": true } ], @@ -4126,22 +4126,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/ollama-tutorial/index.md", + "index_path": "tutorials/ollama-tutorial/README.md", "primary_repo": "ollama/ollama", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 14734, + "forks": 15085, "html_url": "https://github.com/ollama/ollama", "http_status": 200, - "open_issues": 2535, - "pushed_at": "2026-03-02T03:17:33Z", + "open_issues": 2691, + "pushed_at": "2026-03-20T23:32:53Z", "reason": "", "repo": "ollama/ollama", - "stars": 163851, - "updated_at": "2026-03-02T16:23:36Z", + "stars": 165720, + "updated_at": "2026-03-21T05:41:35Z", "verified": true } ], @@ -4154,22 +4154,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/onlook-tutorial/index.md", + "index_path": "tutorials/onlook-tutorial/README.md", "primary_repo": "onlook-dev/onlook", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1856, + "forks": 1877, "html_url": "https://github.com/onlook-dev/onlook", "http_status": 200, - "open_issues": 349, + "open_issues": 353, "pushed_at": "2026-02-27T02:35:09Z", "reason": "", "repo": "onlook-dev/onlook", - "stars": 24795, - "updated_at": "2026-03-02T15:38:44Z", + "stars": 24931, + "updated_at": "2026-03-21T05:17:07Z", "verified": true } ], @@ -4182,22 +4182,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/opcode-tutorial/index.md", + "index_path": "tutorials/opcode-tutorial/README.md", "primary_repo": "winfunc/opcode", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1601, + "forks": 1620, "html_url": "https://github.com/winfunc/opcode", "http_status": 200, - "open_issues": 326, + "open_issues": 327, "pushed_at": "2025-10-16T12:05:56Z", "reason": "", "repo": "winfunc/opcode", - "stars": 20741, - "updated_at": "2026-03-02T15:46:50Z", + "stars": 21031, + "updated_at": "2026-03-21T05:18:08Z", "verified": true } ], @@ -4210,22 +4210,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/open-swe-tutorial/index.md", + "index_path": "tutorials/open-swe-tutorial/README.md", "primary_repo": "langchain-ai/open-swe", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 729, + "forks": 926, "html_url": "https://github.com/langchain-ai/open-swe", "http_status": 200, - "open_issues": 86, - "pushed_at": "2026-03-02T02:08:21Z", + "open_issues": 37, + "pushed_at": "2026-03-20T21:41:28Z", "reason": "", "repo": "langchain-ai/open-swe", - "stars": 5273, - "updated_at": "2026-03-02T12:22:49Z", + "stars": 7741, + "updated_at": "2026-03-21T05:46:53Z", "verified": true } ], @@ -4238,22 +4238,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/open-webui-tutorial/index.md", + "index_path": "tutorials/open-webui-tutorial/README.md", "primary_repo": "open-webui/open-webui", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 17765, + "forks": 18099, "html_url": "https://github.com/open-webui/open-webui", "http_status": 200, - "open_issues": 263, - "pushed_at": "2026-03-02T01:14:18Z", + "open_issues": 320, + "pushed_at": "2026-03-20T23:54:16Z", "reason": "", "repo": "open-webui/open-webui", - "stars": 125443, - "updated_at": "2026-03-02T16:25:10Z", + "stars": 128047, + "updated_at": "2026-03-21T05:47:42Z", "verified": true } ], @@ -4266,22 +4266,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openai-python-sdk-tutorial/index.md", + "index_path": "tutorials/openai-python-sdk-tutorial/README.md", "primary_repo": "openai/openai-python", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 4584, + "forks": 4650, "html_url": "https://github.com/openai/openai-python", "http_status": 200, - "open_issues": 291, - "pushed_at": "2026-03-02T15:27:07Z", + "open_issues": 347, + "pushed_at": "2026-03-21T05:18:45Z", "reason": "", "repo": "openai/openai-python", - "stars": 30119, - "updated_at": "2026-03-02T15:38:43Z", + "stars": 30308, + "updated_at": "2026-03-21T03:49:29Z", "verified": true } ], @@ -4294,36 +4294,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openai-realtime-agents-tutorial/index.md", + "index_path": "tutorials/openai-realtime-agents-tutorial/README.md", "primary_repo": "openai/openai-realtime-agents", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1076, + "forks": 1078, "html_url": "https://github.com/openai/openai-realtime-agents", "http_status": 200, - "open_issues": 25, + "open_issues": 26, "pushed_at": "2026-01-07T18:38:52Z", "reason": "", "repo": "openai/openai-realtime-agents", - "stars": 6781, - "updated_at": "2026-03-02T14:09:42Z", + "stars": 6806, + "updated_at": "2026-03-21T01:48:56Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 625, + "forks": 655, "html_url": "https://github.com/openai/openai-agents-js", "http_status": 200, - "open_issues": 32, - "pushed_at": "2026-03-02T06:04:25Z", + "open_issues": 36, + "pushed_at": "2026-03-21T03:39:44Z", "reason": "", "repo": "openai/openai-agents-js", - "stars": 2369, - "updated_at": "2026-03-02T09:49:51Z", + "stars": 2503, + "updated_at": "2026-03-21T05:44:16Z", "verified": true } ], @@ -4337,22 +4337,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/openai-whisper-tutorial/index.md", + "index_path": "tutorials/openai-whisper-tutorial/README.md", "primary_repo": "openai/whisper", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 11810, + "forks": 11906, "html_url": "https://github.com/openai/whisper", "http_status": 200, - "open_issues": 115, + "open_issues": 116, "pushed_at": "2025-12-15T10:18:21Z", "reason": "", "repo": "openai/whisper", - "stars": 95307, - "updated_at": "2026-03-02T16:34:19Z", + "stars": 96361, + "updated_at": "2026-03-21T05:26:47Z", "verified": true } ], @@ -4365,22 +4365,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openbb-tutorial/index.md", + "index_path": "tutorials/openbb-tutorial/README.md", "primary_repo": "OpenBB-finance/OpenBB", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "develop", - "forks": 6095, + "forks": 6227, "html_url": "https://github.com/OpenBB-finance/OpenBB", "http_status": 200, - "open_issues": 67, - "pushed_at": "2026-03-01T17:49:42Z", + "open_issues": 66, + "pushed_at": "2026-03-19T16:21:37Z", "reason": "", "repo": "OpenBB-finance/OpenBB", - "stars": 62412, - "updated_at": "2026-03-02T15:53:55Z", + "stars": 63364, + "updated_at": "2026-03-21T05:11:20Z", "verified": true } ], @@ -4393,22 +4393,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openclaw-tutorial/index.md", + "index_path": "tutorials/openclaw-tutorial/README.md", "primary_repo": "openclaw/openclaw", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 47689, + "forks": 63410, "html_url": "https://github.com/openclaw/openclaw", "http_status": 200, - "open_issues": 10099, - "pushed_at": "2026-03-02T16:34:14Z", + "open_issues": 14561, + "pushed_at": "2026-03-21T05:45:11Z", "reason": "", "repo": "openclaw/openclaw", - "stars": 247023, - "updated_at": "2026-03-02T16:35:13Z", + "stars": 327464, + "updated_at": "2026-03-21T05:46:28Z", "verified": true } ], @@ -4421,36 +4421,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/opencode-ai-legacy-tutorial/index.md", + "index_path": "tutorials/opencode-ai-legacy-tutorial/README.md", "primary_repo": "opencode-ai/opencode", "primary_repo_verified": true, "repositories": [ { "archived": true, "default_branch": "main", - "forks": 1079, + "forks": 1130, "html_url": "https://github.com/opencode-ai/opencode", "http_status": 200, "open_issues": 158, "pushed_at": "2025-09-18T02:54:28Z", "reason": "", "repo": "opencode-ai/opencode", - "stars": 11189, - "updated_at": "2026-03-02T16:01:16Z", + "stars": 11505, + "updated_at": "2026-03-21T03:14:16Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 1284, + "forks": 1372, "html_url": "https://github.com/charmbracelet/crush", "http_status": 200, - "open_issues": 340, - "pushed_at": "2026-03-02T13:36:45Z", + "open_issues": 348, + "pushed_at": "2026-03-21T03:49:21Z", "reason": "", "repo": "charmbracelet/crush", - "stars": 20729, - "updated_at": "2026-03-02T16:02:43Z", + "stars": 21742, + "updated_at": "2026-03-21T05:43:01Z", "verified": true } ], @@ -4464,22 +4464,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/opencode-tutorial/index.md", + "index_path": "tutorials/opencode-tutorial/README.md", "primary_repo": "anomalyco/opencode", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "dev", - "forks": 11529, + "forks": 13375, "html_url": "https://github.com/anomalyco/opencode", "http_status": 200, - "open_issues": 6131, - "pushed_at": "2026-03-02T16:23:54Z", + "open_issues": 7257, + "pushed_at": "2026-03-21T05:31:00Z", "reason": "", "repo": "anomalyco/opencode", - "stars": 114224, - "updated_at": "2026-03-02T16:32:52Z", + "stars": 126634, + "updated_at": "2026-03-21T05:46:26Z", "verified": true } ], @@ -4492,22 +4492,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openhands-tutorial/index.md", + "index_path": "tutorials/openhands-tutorial/README.md", "primary_repo": "OpenHands/OpenHands", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8534, + "forks": 8710, "html_url": "https://github.com/OpenHands/OpenHands", "http_status": 200, - "open_issues": 362, - "pushed_at": "2026-03-02T16:31:28Z", + "open_issues": 327, + "pushed_at": "2026-03-21T04:49:58Z", "reason": "", "repo": "OpenHands/OpenHands", - "stars": 68406, - "updated_at": "2026-03-02T16:06:58Z", + "stars": 69474, + "updated_at": "2026-03-21T05:07:31Z", "verified": true } ], @@ -4520,22 +4520,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openskills-tutorial/index.md", + "index_path": "tutorials/openskills-tutorial/README.md", "primary_repo": "numman-ali/openskills", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 559, + "forks": 585, "html_url": "https://github.com/numman-ali/openskills", "http_status": 200, - "open_issues": 36, + "open_issues": 39, "pushed_at": "2026-01-18T13:09:50Z", "reason": "", "repo": "numman-ali/openskills", - "stars": 8661, - "updated_at": "2026-03-02T16:03:13Z", + "stars": 9142, + "updated_at": "2026-03-21T05:27:03Z", "verified": true } ], @@ -4548,22 +4548,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/openspec-tutorial/index.md", + "index_path": "tutorials/openspec-tutorial/README.md", "primary_repo": "Fission-AI/OpenSpec", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1769, + "forks": 2166, "html_url": "https://github.com/Fission-AI/OpenSpec", "http_status": 200, - "open_issues": 255, - "pushed_at": "2026-02-27T08:52:45Z", + "open_issues": 310, + "pushed_at": "2026-03-11T07:54:38Z", "reason": "", "repo": "Fission-AI/OpenSpec", - "stars": 26901, - "updated_at": "2026-03-02T16:34:57Z", + "stars": 32780, + "updated_at": "2026-03-21T05:31:41Z", "verified": true } ], @@ -4576,22 +4576,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/opensrc-tutorial/index.md", + "index_path": "tutorials/opensrc-tutorial/README.md", "primary_repo": "vercel-labs/opensrc", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 34, + "forks": 38, "html_url": "https://github.com/vercel-labs/opensrc", "http_status": 200, - "open_issues": 18, + "open_issues": 20, "pushed_at": "2026-02-24T16:46:56Z", "reason": "", "repo": "vercel-labs/opensrc", - "stars": 1049, - "updated_at": "2026-03-02T16:02:58Z", + "stars": 1174, + "updated_at": "2026-03-21T05:34:45Z", "verified": true } ], @@ -4604,36 +4604,36 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/outlines-tutorial/index.md", + "index_path": "tutorials/outlines-tutorial/README.md", "primary_repo": "dottxt-ai/outlines", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 667, + "forks": 676, "html_url": "https://github.com/dottxt-ai/outlines", "http_status": 200, "open_issues": 104, - "pushed_at": "2026-03-02T15:27:53Z", + "pushed_at": "2026-03-17T07:29:53Z", "reason": "", "repo": "dottxt-ai/outlines", - "stars": 13485, - "updated_at": "2026-03-02T15:27:31Z", + "stars": 13581, + "updated_at": "2026-03-21T02:25:39Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 667, + "forks": 676, "html_url": "https://github.com/dottxt-ai/outlines", "http_status": 200, "open_issues": 104, - "pushed_at": "2026-03-02T15:27:53Z", + "pushed_at": "2026-03-17T07:29:53Z", "reason": "", "repo": "outlines-dev/outlines", - "stars": 13485, - "updated_at": "2026-03-02T15:27:31Z", + "stars": 13581, + "updated_at": "2026-03-21T02:25:39Z", "verified": true } ], @@ -4647,22 +4647,22 @@ "verified_repo_count": 2 }, { - "index_path": "tutorials/perplexica-tutorial/index.md", + "index_path": "tutorials/perplexica-tutorial/README.md", "primary_repo": "ItzCrazyKns/Perplexica", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 3085, - "html_url": "https://github.com/ItzCrazyKns/Perplexica", + "forks": 3586, + "html_url": "https://github.com/ItzCrazyKns/Vane", "http_status": 200, - "open_issues": 234, - "pushed_at": "2026-02-13T07:14:28Z", + "open_issues": 284, + "pushed_at": "2026-03-10T13:35:09Z", "reason": "", "repo": "ItzCrazyKns/Perplexica", - "stars": 29181, - "updated_at": "2026-03-02T16:34:40Z", + "stars": 33218, + "updated_at": "2026-03-21T05:34:34Z", "verified": true } ], @@ -4675,22 +4675,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/phidata-tutorial/index.md", + "index_path": "tutorials/phidata-tutorial/README.md", "primary_repo": "phidatahq/phidata", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 5078, + "forks": 5146, "html_url": "https://github.com/agno-agi/agno", "http_status": 200, - "open_issues": 630, - "pushed_at": "2026-03-02T16:23:35Z", + "open_issues": 686, + "pushed_at": "2026-03-20T18:24:53Z", "reason": "", "repo": "phidatahq/phidata", - "stars": 38344, - "updated_at": "2026-03-02T16:23:59Z", + "stars": 38834, + "updated_at": "2026-03-21T03:30:29Z", "verified": true } ], @@ -4703,22 +4703,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/photoprism-tutorial/index.md", + "index_path": "tutorials/photoprism-tutorial/README.md", "primary_repo": "photoprism/photoprism", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "develop", - "forks": 2210, + "forks": 2228, "html_url": "https://github.com/photoprism/photoprism", "http_status": 200, - "open_issues": 450, - "pushed_at": "2026-03-02T09:24:37Z", + "open_issues": 443, + "pushed_at": "2026-03-14T12:04:24Z", "reason": "", "repo": "photoprism/photoprism", - "stars": 39411, - "updated_at": "2026-03-02T16:22:11Z", + "stars": 39477, + "updated_at": "2026-03-21T01:27:06Z", "verified": true } ], @@ -4731,22 +4731,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/plandex-tutorial/index.md", + "index_path": "tutorials/plandex-tutorial/README.md", "primary_repo": "plandex-ai/plandex", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1089, + "forks": 1103, "html_url": "https://github.com/plandex-ai/plandex", "http_status": 200, - "open_issues": 45, + "open_issues": 48, "pushed_at": "2025-10-03T21:49:58Z", "reason": "", "repo": "plandex-ai/plandex", - "stars": 15046, - "updated_at": "2026-03-02T16:26:36Z", + "stars": 15114, + "updated_at": "2026-03-21T01:02:07Z", "verified": true } ], @@ -4759,22 +4759,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/planning-with-files-tutorial/index.md", + "index_path": "tutorials/planning-with-files-tutorial/README.md", "primary_repo": "OthmanAdi/planning-with-files", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 1384, + "forks": 1525, "html_url": "https://github.com/OthmanAdi/planning-with-files", "http_status": 200, - "open_issues": 5, - "pushed_at": "2026-02-28T12:58:24Z", + "open_issues": 4, + "pushed_at": "2026-03-20T22:24:02Z", "reason": "", "repo": "OthmanAdi/planning-with-files", - "stars": 14981, - "updated_at": "2026-03-02T16:32:22Z", + "stars": 16664, + "updated_at": "2026-03-21T05:36:26Z", "verified": true } ], @@ -4787,22 +4787,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/playwright-mcp-tutorial/index.md", + "index_path": "tutorials/playwright-mcp-tutorial/README.md", "primary_repo": "microsoft/playwright-mcp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2266, + "forks": 2366, "html_url": "https://github.com/microsoft/playwright-mcp", "http_status": 200, - "open_issues": 19, - "pushed_at": "2026-02-25T19:10:43Z", + "open_issues": 24, + "pushed_at": "2026-03-20T15:13:11Z", "reason": "", "repo": "microsoft/playwright-mcp", - "stars": 28003, - "updated_at": "2026-03-02T16:06:42Z", + "stars": 29359, + "updated_at": "2026-03-21T05:39:12Z", "verified": true } ], @@ -4815,22 +4815,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/pocketflow-tutorial/index.md", + "index_path": "tutorials/pocketflow-tutorial/README.md", "primary_repo": "The-Pocket/PocketFlow", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1105, + "forks": 1118, "html_url": "https://github.com/The-Pocket/PocketFlow", "http_status": 200, - "open_issues": 67, - "pushed_at": "2026-02-16T11:06:34Z", + "open_issues": 68, + "pushed_at": "2026-03-09T03:11:02Z", "reason": "", "repo": "The-Pocket/PocketFlow", - "stars": 10125, - "updated_at": "2026-03-02T16:15:28Z", + "stars": 10242, + "updated_at": "2026-03-21T03:49:18Z", "verified": true } ], @@ -4843,22 +4843,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/postgresql-query-planner/index.md", + "index_path": "tutorials/postgresql-query-planner/README.md", "primary_repo": "postgres/postgres", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 5469, + "forks": 5508, "html_url": "https://github.com/postgres/postgres", "http_status": 200, "open_issues": 0, - "pushed_at": "2026-03-02T16:15:28Z", + "pushed_at": "2026-03-20T22:23:57Z", "reason": "", "repo": "postgres/postgres", - "stars": 20184, - "updated_at": "2026-03-02T16:16:22Z", + "stars": 20350, + "updated_at": "2026-03-21T04:14:19Z", "verified": true } ], @@ -4871,22 +4871,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/posthog-tutorial/index.md", + "index_path": "tutorials/posthog-tutorial/README.md", "primary_repo": "PostHog/posthog", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 2347, + "forks": 2417, "html_url": "https://github.com/PostHog/posthog", "http_status": 200, - "open_issues": 3123, - "pushed_at": "2026-03-02T16:35:00Z", + "open_issues": 3255, + "pushed_at": "2026-03-21T05:01:27Z", "reason": "", "repo": "PostHog/posthog", - "stars": 31845, - "updated_at": "2026-03-02T16:23:00Z", + "stars": 32150, + "updated_at": "2026-03-21T04:57:11Z", "verified": true } ], @@ -4899,22 +4899,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/pydantic-ai-tutorial/index.md", + "index_path": "tutorials/pydantic-ai-tutorial/README.md", "primary_repo": "pydantic/pydantic-ai", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1704, + "forks": 1800, "html_url": "https://github.com/pydantic/pydantic-ai", "http_status": 200, - "open_issues": 560, - "pushed_at": "2026-03-02T16:12:45Z", + "open_issues": 592, + "pushed_at": "2026-03-21T05:13:09Z", "reason": "", "repo": "pydantic/pydantic-ai", - "stars": 15190, - "updated_at": "2026-03-02T16:26:01Z", + "stars": 15632, + "updated_at": "2026-03-21T05:44:20Z", "verified": true } ], @@ -4927,22 +4927,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/quivr-tutorial/index.md", + "index_path": "tutorials/quivr-tutorial/README.md", "primary_repo": "QuivrHQ/quivr", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3722, + "forks": 3734, "html_url": "https://github.com/QuivrHQ/quivr", "http_status": 200, - "open_issues": 22, + "open_issues": 24, "pushed_at": "2025-07-09T12:55:23Z", "reason": "", "repo": "QuivrHQ/quivr", - "stars": 38967, - "updated_at": "2026-03-02T16:20:57Z", + "stars": 39037, + "updated_at": "2026-03-21T04:25:47Z", "verified": true } ], @@ -4955,22 +4955,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/qwen-agent-tutorial/index.md", + "index_path": "tutorials/qwen-agent-tutorial/README.md", "primary_repo": "QwenLM/Qwen-Agent", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1270, + "forks": 1503, "html_url": "https://github.com/QwenLM/Qwen-Agent", "http_status": 200, - "open_issues": 440, - "pushed_at": "2026-02-16T08:20:39Z", + "open_issues": 470, + "pushed_at": "2026-03-04T08:15:07Z", "reason": "", "repo": "QwenLM/Qwen-Agent", - "stars": 13470, - "updated_at": "2026-03-02T16:14:54Z", + "stars": 15700, + "updated_at": "2026-03-21T04:10:24Z", "verified": true } ], @@ -4983,22 +4983,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/ragflow-tutorial/index.md", + "index_path": "tutorials/ragflow-tutorial/README.md", "primary_repo": "infiniflow/ragflow", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 8236, + "forks": 8470, "html_url": "https://github.com/infiniflow/ragflow", "http_status": 200, - "open_issues": 3013, - "pushed_at": "2026-03-02T13:31:12Z", + "open_issues": 3139, + "pushed_at": "2026-03-20T15:39:34Z", "reason": "", "repo": "infiniflow/ragflow", - "stars": 74033, - "updated_at": "2026-03-02T16:31:25Z", + "stars": 75637, + "updated_at": "2026-03-21T05:31:02Z", "verified": true } ], @@ -5011,22 +5011,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/react-fiber-internals/index.md", + "index_path": "tutorials/react-fiber-internals/README.md", "primary_repo": "facebook/react", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 50622, + "forks": 50835, "html_url": "https://github.com/facebook/react", "http_status": 200, - "open_issues": 1148, - "pushed_at": "2026-03-02T08:36:26Z", + "open_issues": 1186, + "pushed_at": "2026-03-20T14:17:18Z", "reason": "", "repo": "facebook/react", - "stars": 243431, - "updated_at": "2026-03-02T15:50:21Z", + "stars": 244092, + "updated_at": "2026-03-21T04:47:10Z", "verified": true } ], @@ -5039,22 +5039,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/refly-tutorial/index.md", + "index_path": "tutorials/refly-tutorial/README.md", "primary_repo": "refly-ai/refly", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 691, + "forks": 702, "html_url": "https://github.com/refly-ai/refly", "http_status": 200, - "open_issues": 95, - "pushed_at": "2026-03-02T12:47:56Z", + "open_issues": 96, + "pushed_at": "2026-03-13T07:26:43Z", "reason": "", "repo": "refly-ai/refly", - "stars": 6876, - "updated_at": "2026-03-02T15:59:05Z", + "stars": 7038, + "updated_at": "2026-03-21T03:48:22Z", "verified": true } ], @@ -5067,22 +5067,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/roo-code-tutorial/index.md", + "index_path": "tutorials/roo-code-tutorial/README.md", "primary_repo": "RooCodeInc/Roo-Code", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3019, + "forks": 2923, "html_url": "https://github.com/RooCodeInc/Roo-Code", "http_status": 200, - "open_issues": 626, - "pushed_at": "2026-03-02T15:35:56Z", + "open_issues": 729, + "pushed_at": "2026-03-21T04:33:19Z", "reason": "", "repo": "RooCodeInc/Roo-Code", - "stars": 22473, - "updated_at": "2026-03-02T15:29:33Z", + "stars": 22762, + "updated_at": "2026-03-21T02:03:32Z", "verified": true } ], @@ -5095,22 +5095,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/semantic-kernel-tutorial/index.md", + "index_path": "tutorials/semantic-kernel-tutorial/README.md", "primary_repo": "microsoft/semantic-kernel", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 4480, + "forks": 4517, "html_url": "https://github.com/microsoft/semantic-kernel", "http_status": 200, - "open_issues": 546, - "pushed_at": "2026-03-02T13:36:10Z", + "open_issues": 505, + "pushed_at": "2026-03-20T20:02:59Z", "reason": "", "repo": "microsoft/semantic-kernel", - "stars": 27346, - "updated_at": "2026-03-02T13:36:14Z", + "stars": 27518, + "updated_at": "2026-03-21T02:23:53Z", "verified": true } ], @@ -5123,22 +5123,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/serena-tutorial/index.md", + "index_path": "tutorials/serena-tutorial/README.md", "primary_repo": "oraios/serena", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1406, + "forks": 1470, "html_url": "https://github.com/oraios/serena", "http_status": 200, - "open_issues": 94, - "pushed_at": "2026-03-02T15:59:21Z", + "open_issues": 100, + "pushed_at": "2026-03-20T23:12:52Z", "reason": "", "repo": "oraios/serena", - "stars": 20869, - "updated_at": "2026-03-02T16:16:24Z", + "stars": 21854, + "updated_at": "2026-03-21T05:31:47Z", "verified": true } ], @@ -5151,22 +5151,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/shotgun-tutorial/index.md", + "index_path": "tutorials/shotgun-tutorial/README.md", "primary_repo": "shotgun-sh/shotgun", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 29, + "forks": 32, "html_url": "https://github.com/shotgun-sh/shotgun", "http_status": 200, - "open_issues": 5, - "pushed_at": "2026-03-02T09:39:59Z", + "open_issues": 3, + "pushed_at": "2026-03-20T08:13:54Z", "reason": "", "repo": "shotgun-sh/shotgun", - "stars": 625, - "updated_at": "2026-03-02T14:07:32Z", + "stars": 702, + "updated_at": "2026-03-21T02:22:46Z", "verified": true } ], @@ -5179,22 +5179,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/sillytavern-tutorial/index.md", + "index_path": "tutorials/sillytavern-tutorial/README.md", "primary_repo": "SillyTavern/SillyTavern", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "release", - "forks": 4826, + "forks": 4962, "html_url": "https://github.com/SillyTavern/SillyTavern", "http_status": 200, - "open_issues": 365, - "pushed_at": "2026-03-01T20:17:38Z", + "open_issues": 403, + "pushed_at": "2026-03-21T04:54:24Z", "reason": "", "repo": "SillyTavern/SillyTavern", - "stars": 23772, - "updated_at": "2026-03-02T16:12:03Z", + "stars": 24629, + "updated_at": "2026-03-21T05:27:17Z", "verified": true } ], @@ -5207,22 +5207,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/siyuan-tutorial/index.md", + "index_path": "tutorials/siyuan-tutorial/README.md", "primary_repo": "siyuan-note/siyuan", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 2589, + "forks": 2613, "html_url": "https://github.com/siyuan-note/siyuan", "http_status": 200, - "open_issues": 366, - "pushed_at": "2026-03-02T16:06:23Z", + "open_issues": 328, + "pushed_at": "2026-03-21T05:02:08Z", "reason": "", "repo": "siyuan-note/siyuan", - "stars": 41585, - "updated_at": "2026-03-02T15:45:18Z", + "stars": 42007, + "updated_at": "2026-03-21T03:57:39Z", "verified": true } ], @@ -5235,22 +5235,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/smolagents-tutorial/index.md", + "index_path": "tutorials/smolagents-tutorial/README.md", "primary_repo": "huggingface/smolagents", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2325, + "forks": 2384, "html_url": "https://github.com/huggingface/smolagents", "http_status": 200, - "open_issues": 394, - "pushed_at": "2026-03-01T19:49:53Z", + "open_issues": 444, + "pushed_at": "2026-03-13T18:25:52Z", "reason": "", "repo": "huggingface/smolagents", - "stars": 25699, - "updated_at": "2026-03-02T16:33:34Z", + "stars": 26180, + "updated_at": "2026-03-21T04:37:31Z", "verified": true } ], @@ -5263,22 +5263,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/stagewise-tutorial/index.md", + "index_path": "tutorials/stagewise-tutorial/README.md", "primary_repo": "stagewise-io/stagewise", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 440, + "forks": 449, "html_url": "https://github.com/stagewise-io/stagewise", "http_status": 200, - "open_issues": 35, - "pushed_at": "2026-03-02T14:26:59Z", + "open_issues": 10, + "pushed_at": "2026-03-20T16:18:13Z", "reason": "", "repo": "stagewise-io/stagewise", - "stars": 6493, - "updated_at": "2026-03-01T17:11:00Z", + "stars": 6516, + "updated_at": "2026-03-20T19:50:02Z", "verified": true } ], @@ -5291,22 +5291,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/strands-agents-tutorial/index.md", + "index_path": "tutorials/strands-agents-tutorial/README.md", "primary_repo": "strands-agents/sdk-python", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 677, + "forks": 730, "html_url": "https://github.com/strands-agents/sdk-python", "http_status": 200, - "open_issues": 394, - "pushed_at": "2026-02-27T21:10:14Z", + "open_issues": 433, + "pushed_at": "2026-03-20T15:52:00Z", "reason": "", "repo": "strands-agents/sdk-python", - "stars": 5237, - "updated_at": "2026-03-02T16:04:39Z", + "stars": 5345, + "updated_at": "2026-03-21T03:47:01Z", "verified": true } ], @@ -5319,22 +5319,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/supabase-tutorial/index.md", + "index_path": "tutorials/supabase-tutorial/README.md", "primary_repo": "supabase/supabase", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 11689, + "forks": 11845, "html_url": "https://github.com/supabase/supabase", "http_status": 200, - "open_issues": 966, - "pushed_at": "2026-03-02T16:35:11Z", + "open_issues": 955, + "pushed_at": "2026-03-20T21:51:06Z", "reason": "", "repo": "supabase/supabase", - "stars": 98422, - "updated_at": "2026-03-02T16:33:28Z", + "stars": 99368, + "updated_at": "2026-03-21T04:35:16Z", "verified": true } ], @@ -5347,22 +5347,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/superagi-tutorial/index.md", + "index_path": "tutorials/superagi-tutorial/README.md", "primary_repo": "TransformerOptimus/SuperAGI", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2164, + "forks": 2182, "html_url": "https://github.com/TransformerOptimus/SuperAGI", "http_status": 200, - "open_issues": 216, + "open_issues": 221, "pushed_at": "2025-01-22T22:14:07Z", "reason": "", "repo": "TransformerOptimus/SuperAGI", - "stars": 17227, - "updated_at": "2026-03-02T11:57:39Z", + "stars": 17286, + "updated_at": "2026-03-20T23:54:20Z", "verified": true } ], @@ -5375,22 +5375,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/superset-terminal-tutorial/index.md", + "index_path": "tutorials/superset-terminal-tutorial/README.md", "primary_repo": "superset-sh/superset", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 228, + "forks": 545, "html_url": "https://github.com/superset-sh/superset", "http_status": 200, - "open_issues": 240, - "pushed_at": "2026-03-02T09:39:04Z", + "open_issues": 401, + "pushed_at": "2026-03-21T05:25:16Z", "reason": "", "repo": "superset-sh/superset", - "stars": 3321, - "updated_at": "2026-03-02T16:33:10Z", + "stars": 7546, + "updated_at": "2026-03-21T05:40:09Z", "verified": true } ], @@ -5403,22 +5403,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/swarm-tutorial/index.md", + "index_path": "tutorials/swarm-tutorial/README.md", "primary_repo": "openai/swarm", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2244, + "forks": 2257, "html_url": "https://github.com/openai/swarm", "http_status": 200, - "open_issues": 17, + "open_issues": 18, "pushed_at": "2025-03-11T17:27:22Z", "reason": "", "repo": "openai/swarm", - "stars": 21056, - "updated_at": "2026-03-02T14:46:47Z", + "stars": 21200, + "updated_at": "2026-03-21T05:09:16Z", "verified": true } ], @@ -5431,65 +5431,50 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/swe-agent-tutorial/index.md", + "index_path": "tutorials/swe-agent-tutorial/README.md", "primary_repo": "SWE-agent/SWE-agent", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2009, + "forks": 2027, "html_url": "https://github.com/SWE-agent/SWE-agent", "http_status": 200, - "open_issues": 27, - "pushed_at": "2026-03-02T16:10:52Z", + "open_issues": 26, + "pushed_at": "2026-03-16T22:42:50Z", "reason": "", "repo": "SWE-agent/SWE-agent", - "stars": 18606, - "updated_at": "2026-03-02T16:12:10Z", - "verified": true - }, - { - "archived": false, - "default_branch": "main", - "forks": 405, - "html_url": "https://github.com/SWE-agent/mini-swe-agent", - "http_status": 200, - "open_issues": 13, - "pushed_at": "2026-03-02T16:18:14Z", - "reason": "", - "repo": "SWE-agent/mini-swe-agent", - "stars": 3063, - "updated_at": "2026-03-02T16:18:37Z", + "stars": 18800, + "updated_at": "2026-03-20T20:34:22Z", "verified": true } ], - "source_repo_count": 2, + "source_repo_count": 1, "source_repos": [ - "SWE-agent/SWE-agent", - "SWE-agent/mini-swe-agent" + "SWE-agent/SWE-agent" ], "tutorial": "swe-agent-tutorial", "unverified_repo_count": 0, - "verified_repo_count": 2 + "verified_repo_count": 1 }, { - "index_path": "tutorials/sweep-tutorial/index.md", + "index_path": "tutorials/sweep-tutorial/README.md", "primary_repo": "sweepai/sweep", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 449, + "forks": 455, "html_url": "https://github.com/sweepai/sweep", "http_status": 200, "open_issues": 749, "pushed_at": "2025-09-18T06:10:59Z", "reason": "", "repo": "sweepai/sweep", - "stars": 7643, - "updated_at": "2026-03-01T00:10:21Z", + "stars": 7648, + "updated_at": "2026-03-21T00:37:33Z", "verified": true } ], @@ -5502,22 +5487,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/tabby-tutorial/index.md", + "index_path": "tutorials/tabby-tutorial/README.md", "primary_repo": "TabbyML/tabby", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1689, + "forks": 1691, "html_url": "https://github.com/TabbyML/tabby", "http_status": 200, - "open_issues": 293, - "pushed_at": "2026-03-02T08:20:29Z", + "open_issues": 299, + "pushed_at": "2026-03-02T20:08:28Z", "reason": "", "repo": "TabbyML/tabby", - "stars": 32970, - "updated_at": "2026-03-02T15:01:56Z", + "stars": 33029, + "updated_at": "2026-03-20T23:09:26Z", "verified": true } ], @@ -5530,64 +5515,64 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/taskade-awesome-vibe-coding-tutorial/index.md", + "index_path": "tutorials/taskade-awesome-vibe-coding-tutorial/README.md", "primary_repo": "taskade/awesome-vibe-coding", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3, + "forks": 5, "html_url": "https://github.com/taskade/awesome-vibe-coding", "http_status": 200, "open_issues": 0, - "pushed_at": "2026-02-11T17:32:11Z", + "pushed_at": "2026-03-21T03:14:14Z", "reason": "", "repo": "taskade/awesome-vibe-coding", - "stars": 6, - "updated_at": "2026-02-25T22:49:49Z", + "stars": 8, + "updated_at": "2026-03-21T03:14:18Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 30, + "forks": 34, "html_url": "https://github.com/taskade/mcp", "http_status": 200, "open_issues": 10, "pushed_at": "2026-02-13T21:03:17Z", "reason": "", "repo": "taskade/mcp", - "stars": 111, - "updated_at": "2026-03-02T07:47:37Z", + "stars": 116, + "updated_at": "2026-03-14T12:38:47Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 4, + "forks": 5, "html_url": "https://github.com/taskade/docs", "http_status": 200, - "open_issues": 1, - "pushed_at": "2026-02-25T08:57:52Z", + "open_issues": 6, + "pushed_at": "2026-03-16T08:21:04Z", "reason": "", "repo": "taskade/docs", "stars": 11, - "updated_at": "2026-02-28T21:34:52Z", + "updated_at": "2026-03-16T08:21:08Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 1, + "forks": 2, "html_url": "https://github.com/taskade/taskade", "http_status": 200, "open_issues": 0, "pushed_at": "2026-02-25T06:33:20Z", "reason": "", "repo": "taskade/taskade", - "stars": 6, - "updated_at": "2026-03-01T01:55:05Z", + "stars": 9, + "updated_at": "2026-03-16T08:05:11Z", "verified": true } ], @@ -5603,108 +5588,93 @@ "verified_repo_count": 4 }, { - "index_path": "tutorials/taskade-docs-tutorial/index.md", + "index_path": "tutorials/taskade-docs-tutorial/README.md", "primary_repo": "taskade/docs", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 4, + "forks": 5, "html_url": "https://github.com/taskade/docs", "http_status": 200, - "open_issues": 1, - "pushed_at": "2026-02-25T08:57:52Z", + "open_issues": 6, + "pushed_at": "2026-03-16T08:21:04Z", "reason": "", "repo": "taskade/docs", "stars": 11, - "updated_at": "2026-02-28T21:34:52Z", + "updated_at": "2026-03-16T08:21:08Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 30, + "forks": 34, "html_url": "https://github.com/taskade/mcp", "http_status": 200, "open_issues": 10, "pushed_at": "2026-02-13T21:03:17Z", "reason": "", "repo": "taskade/mcp", - "stars": 111, - "updated_at": "2026-03-02T07:47:37Z", - "verified": true - }, - { - "archived": false, - "default_branch": "main", - "forks": 1, - "html_url": "https://github.com/taskade/taskade", - "http_status": 200, - "open_issues": 0, - "pushed_at": "2026-02-25T06:33:20Z", - "reason": "", - "repo": "taskade/taskade", - "stars": 6, - "updated_at": "2026-03-01T01:55:05Z", + "stars": 116, + "updated_at": "2026-03-14T12:38:47Z", "verified": true } ], - "source_repo_count": 3, + "source_repo_count": 2, "source_repos": [ "taskade/docs", - "taskade/mcp", - "taskade/taskade" + "taskade/mcp" ], "tutorial": "taskade-docs-tutorial", "unverified_repo_count": 0, - "verified_repo_count": 3 + "verified_repo_count": 2 }, { - "index_path": "tutorials/taskade-mcp-tutorial/index.md", + "index_path": "tutorials/taskade-mcp-tutorial/README.md", "primary_repo": "taskade/mcp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 30, + "forks": 34, "html_url": "https://github.com/taskade/mcp", "http_status": 200, "open_issues": 10, "pushed_at": "2026-02-13T21:03:17Z", "reason": "", "repo": "taskade/mcp", - "stars": 111, - "updated_at": "2026-03-02T07:47:37Z", + "stars": 116, + "updated_at": "2026-03-14T12:38:47Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 4, + "forks": 5, "html_url": "https://github.com/taskade/docs", "http_status": 200, - "open_issues": 1, - "pushed_at": "2026-02-25T08:57:52Z", + "open_issues": 6, + "pushed_at": "2026-03-16T08:21:04Z", "reason": "", "repo": "taskade/docs", "stars": 11, - "updated_at": "2026-02-28T21:34:52Z", + "updated_at": "2026-03-16T08:21:08Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 1, + "forks": 2, "html_url": "https://github.com/taskade/taskade", "http_status": 200, "open_issues": 0, "pushed_at": "2026-02-25T06:33:20Z", "reason": "", "repo": "taskade/taskade", - "stars": 6, - "updated_at": "2026-03-01T01:55:05Z", + "stars": 9, + "updated_at": "2026-03-16T08:05:11Z", "verified": true } ], @@ -5719,78 +5689,78 @@ "verified_repo_count": 3 }, { - "index_path": "tutorials/taskade-tutorial/index.md", + "index_path": "tutorials/taskade-tutorial/README.md", "primary_repo": "taskade/taskade", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1, + "forks": 2, "html_url": "https://github.com/taskade/taskade", "http_status": 200, "open_issues": 0, "pushed_at": "2026-02-25T06:33:20Z", "reason": "", "repo": "taskade/taskade", - "stars": 6, - "updated_at": "2026-03-01T01:55:05Z", + "stars": 9, + "updated_at": "2026-03-16T08:05:11Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 4, + "forks": 5, "html_url": "https://github.com/taskade/docs", "http_status": 200, - "open_issues": 1, - "pushed_at": "2026-02-25T08:57:52Z", + "open_issues": 6, + "pushed_at": "2026-03-16T08:21:04Z", "reason": "", "repo": "taskade/docs", "stars": 11, - "updated_at": "2026-02-28T21:34:52Z", + "updated_at": "2026-03-16T08:21:08Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 30, + "forks": 34, "html_url": "https://github.com/taskade/mcp", "http_status": 200, "open_issues": 10, "pushed_at": "2026-02-13T21:03:17Z", "reason": "", "repo": "taskade/mcp", - "stars": 111, - "updated_at": "2026-03-02T07:47:37Z", + "stars": 116, + "updated_at": "2026-03-14T12:38:47Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 3, + "forks": 5, "html_url": "https://github.com/taskade/awesome-vibe-coding", "http_status": 200, "open_issues": 0, - "pushed_at": "2026-02-11T17:32:11Z", + "pushed_at": "2026-03-21T03:14:14Z", "reason": "", "repo": "taskade/awesome-vibe-coding", - "stars": 6, - "updated_at": "2026-02-25T22:49:49Z", + "stars": 8, + "updated_at": "2026-03-21T03:14:18Z", "verified": true }, { "archived": false, "default_branch": "main", - "forks": 1, + "forks": 2, "html_url": "https://github.com/taskade/temporal-parser", "http_status": 200, "open_issues": 2, "pushed_at": "2026-02-12T17:47:10Z", "reason": "", "repo": "taskade/temporal-parser", - "stars": 1, - "updated_at": "2026-02-12T17:46:43Z", + "stars": 2, + "updated_at": "2026-03-08T14:53:08Z", "verified": true } ], @@ -5807,22 +5777,22 @@ "verified_repo_count": 5 }, { - "index_path": "tutorials/teable-database-platform/index.md", + "index_path": "tutorials/teable-database-platform/README.md", "primary_repo": "teableio/teable", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "develop", - "forks": 1220, + "forks": 1230, "html_url": "https://github.com/teableio/teable", "http_status": 200, - "open_issues": 145, - "pushed_at": "2026-03-02T11:48:16Z", + "open_issues": 149, + "pushed_at": "2026-03-20T16:09:25Z", "reason": "", "repo": "teableio/teable", - "stars": 20964, - "updated_at": "2026-03-02T16:01:28Z", + "stars": 21041, + "updated_at": "2026-03-21T05:16:50Z", "verified": true } ], @@ -5835,22 +5805,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/tiktoken-tutorial/index.md", + "index_path": "tutorials/tiktoken-tutorial/README.md", "primary_repo": "openai/tiktoken", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1393, + "forks": 1416, "html_url": "https://github.com/openai/tiktoken", "http_status": 200, - "open_issues": 85, + "open_issues": 95, "pushed_at": "2026-02-08T20:53:30Z", "reason": "", "repo": "openai/tiktoken", - "stars": 17446, - "updated_at": "2026-03-02T14:18:45Z", + "stars": 17626, + "updated_at": "2026-03-21T03:02:14Z", "verified": true } ], @@ -5863,22 +5833,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/turborepo-tutorial/index.md", + "index_path": "tutorials/turborepo-tutorial/README.md", "primary_repo": "vercel/turborepo", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2275, + "forks": 2301, "html_url": "https://github.com/vercel/turborepo", "http_status": 200, - "open_issues": 142, - "pushed_at": "2026-03-02T16:26:22Z", + "open_issues": 85, + "pushed_at": "2026-03-20T21:45:44Z", "reason": "", "repo": "vercel/turborepo", - "stars": 29913, - "updated_at": "2026-03-02T16:27:35Z", + "stars": 30048, + "updated_at": "2026-03-20T21:45:50Z", "verified": true } ], @@ -5891,22 +5861,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/use-mcp-tutorial/index.md", + "index_path": "tutorials/use-mcp-tutorial/README.md", "primary_repo": "modelcontextprotocol/use-mcp", "primary_repo_verified": true, "repositories": [ { "archived": true, "default_branch": "main", - "forks": 82, + "forks": 80, "html_url": "https://github.com/modelcontextprotocol/use-mcp", "http_status": 200, "open_issues": 20, "pushed_at": "2026-01-12T22:50:06Z", "reason": "", "repo": "modelcontextprotocol/use-mcp", - "stars": 1030, - "updated_at": "2026-03-01T06:07:05Z", + "stars": 1031, + "updated_at": "2026-03-05T22:52:57Z", "verified": true } ], @@ -5919,22 +5889,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/vercel-ai-tutorial/index.md", + "index_path": "tutorials/vercel-ai-tutorial/README.md", "primary_repo": "vercel/ai", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3903, + "forks": 4028, "html_url": "https://github.com/vercel/ai", "http_status": 200, - "open_issues": 1236, - "pushed_at": "2026-03-02T16:17:15Z", + "open_issues": 1390, + "pushed_at": "2026-03-20T23:32:25Z", "reason": "", "repo": "vercel/ai", - "stars": 22230, - "updated_at": "2026-03-02T16:10:19Z", + "stars": 22850, + "updated_at": "2026-03-21T05:06:41Z", "verified": true } ], @@ -5947,22 +5917,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/vibe-kanban-tutorial/index.md", + "index_path": "tutorials/vibe-kanban-tutorial/README.md", "primary_repo": "BloopAI/vibe-kanban", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 2143, + "forks": 2320, "html_url": "https://github.com/BloopAI/vibe-kanban", "http_status": 200, - "open_issues": 401, - "pushed_at": "2026-03-02T14:17:11Z", + "open_issues": 452, + "pushed_at": "2026-03-20T17:44:40Z", "reason": "", "repo": "BloopAI/vibe-kanban", - "stars": 22194, - "updated_at": "2026-03-02T16:20:49Z", + "stars": 23520, + "updated_at": "2026-03-21T04:52:41Z", "verified": true } ], @@ -5975,22 +5945,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/vibesdk-tutorial/index.md", + "index_path": "tutorials/vibesdk-tutorial/README.md", "primary_repo": "cloudflare/vibesdk", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 1133, + "forks": 1155, "html_url": "https://github.com/cloudflare/vibesdk", "http_status": 200, - "open_issues": 42, - "pushed_at": "2026-03-02T09:08:46Z", + "open_issues": 45, + "pushed_at": "2026-03-03T16:57:24Z", "reason": "", "repo": "cloudflare/vibesdk", - "stars": 4825, - "updated_at": "2026-03-02T13:15:18Z", + "stars": 4893, + "updated_at": "2026-03-20T15:51:30Z", "verified": true } ], @@ -6003,22 +5973,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/vllm-tutorial/index.md", + "index_path": "tutorials/vllm-tutorial/README.md", "primary_repo": "vllm-project/vllm", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 13854, + "forks": 14593, "html_url": "https://github.com/vllm-project/vllm", "http_status": 200, - "open_issues": 3540, - "pushed_at": "2026-03-02T16:34:13Z", + "open_issues": 3792, + "pushed_at": "2026-03-21T04:57:25Z", "reason": "", "repo": "vllm-project/vllm", - "stars": 71679, - "updated_at": "2026-03-02T16:24:49Z", + "stars": 73820, + "updated_at": "2026-03-21T05:44:28Z", "verified": true } ], @@ -6031,22 +6001,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/whisper-cpp-tutorial/index.md", + "index_path": "tutorials/whisper-cpp-tutorial/README.md", "primary_repo": "ggml-org/whisper.cpp", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "master", - "forks": 5247, + "forks": 5322, "html_url": "https://github.com/ggml-org/whisper.cpp", "http_status": 200, - "open_issues": 1141, - "pushed_at": "2026-02-27T18:58:02Z", + "open_issues": 1154, + "pushed_at": "2026-03-19T08:40:35Z", "reason": "", "repo": "ggml-org/whisper.cpp", - "stars": 47159, - "updated_at": "2026-03-02T15:57:04Z", + "stars": 47758, + "updated_at": "2026-03-21T05:14:07Z", "verified": true } ], @@ -6059,22 +6029,22 @@ "verified_repo_count": 1 }, { - "index_path": "tutorials/wshobson-agents-tutorial/index.md", + "index_path": "tutorials/wshobson-agents-tutorial/README.md", "primary_repo": "wshobson/agents", "primary_repo_verified": true, "repositories": [ { "archived": false, "default_branch": "main", - "forks": 3280, + "forks": 3480, "html_url": "https://github.com/wshobson/agents", "http_status": 200, - "open_issues": 7, - "pushed_at": "2026-02-21T12:47:56Z", + "open_issues": 5, + "pushed_at": "2026-03-17T15:00:12Z", "reason": "", "repo": "wshobson/agents", - "stars": 29950, - "updated_at": "2026-03-02T16:19:16Z", + "stars": 31862, + "updated_at": "2026-03-21T05:44:57Z", "verified": true } ], diff --git a/discoverability/tutorial-source-verification.md b/discoverability/tutorial-source-verification.md index 0cea5d4..a2339b7 100644 --- a/discoverability/tutorial-source-verification.md +++ b/discoverability/tutorial-source-verification.md @@ -1,8 +1,8 @@ # Tutorial Source Verification Report -Automated verification of GitHub source repositories referenced by `tutorials/*/index.md`. +Automated verification of GitHub source repositories referenced by `tutorials/*/README.md`. -- generated_on: **2026-03-02** +- generated_on: **2026-03-21** - tutorials scanned: **191** - tutorials with source repos: **191** - tutorials without source repos: **0** @@ -15,31 +15,31 @@ Automated verification of GitHub source repositories referenced by `tutorials/*/ | Repository | Stars | Last Push | Archived | |:-----------|------:|:----------|:---------| -| [`openclaw/openclaw`](https://github.com/openclaw/openclaw) | 247,023 | 2026-03-02 | no | -| [`facebook/react`](https://github.com/facebook/react) | 243,431 | 2026-03-02 | no | -| [`n8n-io/n8n`](https://github.com/n8n-io/n8n) | 177,197 | 2026-03-02 | no | -| [`ollama/ollama`](https://github.com/ollama/ollama) | 163,851 | 2026-03-02 | no | -| [`huggingface/transformers`](https://github.com/huggingface/transformers) | 157,266 | 2026-03-02 | no | -| [`langflow-ai/langflow`](https://github.com/langflow-ai/langflow) | 145,194 | 2026-03-02 | no | -| [`langgenius/dify`](https://github.com/langgenius/dify) | 130,930 | 2026-03-02 | no | -| [`langchain-ai/langchain`](https://github.com/langchain-ai/langchain) | 127,956 | 2026-03-02 | no | -| [`open-webui/open-webui`](https://github.com/open-webui/open-webui) | 125,443 | 2026-03-02 | no | -| [`anomalyco/opencode`](https://github.com/anomalyco/opencode) | 114,224 | 2026-03-02 | no | -| [`microsoft/TypeScript`](https://github.com/microsoft/TypeScript) | 107,995 | 2026-03-02 | no | -| [`comfyanonymous/ComfyUI`](https://github.com/Comfy-Org/ComfyUI) | 104,688 | 2026-03-02 | no | -| [`supabase/supabase`](https://github.com/supabase/supabase) | 98,422 | 2026-03-02 | no | -| [`ggerganov/llama.cpp`](https://github.com/ggml-org/llama.cpp) | 96,348 | 2026-03-02 | no | -| [`google-gemini/gemini-cli`](https://github.com/google-gemini/gemini-cli) | 96,224 | 2026-03-02 | no | -| [`openai/whisper`](https://github.com/openai/whisper) | 95,307 | 2025-12-15 | no | -| [`firecrawl/firecrawl`](https://github.com/firecrawl/firecrawl) | 87,358 | 2026-03-02 | no | -| [`mendableai/firecrawl`](https://github.com/firecrawl/firecrawl) | 87,358 | 2026-03-02 | no | -| [`punkpeye/awesome-mcp-servers`](https://github.com/punkpeye/awesome-mcp-servers) | 81,956 | 2026-02-26 | no | -| [`anthropics/skills`](https://github.com/anthropics/skills) | 81,153 | 2026-02-25 | no | -| [`modelcontextprotocol/servers`](https://github.com/modelcontextprotocol/servers) | 79,872 | 2026-02-28 | no | -| [`browser-use/browser-use`](https://github.com/browser-use/browser-use) | 79,382 | 2026-03-02 | no | -| [`infiniflow/ragflow`](https://github.com/infiniflow/ragflow) | 74,033 | 2026-03-02 | no | -| [`lobehub/lobe-chat`](https://github.com/lobehub/lobehub) | 72,894 | 2026-03-02 | no | -| [`anthropics/claude-code`](https://github.com/anthropics/claude-code) | 72,674 | 2026-03-02 | no | +| [`openclaw/openclaw`](https://github.com/openclaw/openclaw) | 327,464 | 2026-03-21 | no | +| [`facebook/react`](https://github.com/facebook/react) | 244,092 | 2026-03-20 | no | +| [`n8n-io/n8n`](https://github.com/n8n-io/n8n) | 180,232 | 2026-03-21 | no | +| [`ollama/ollama`](https://github.com/ollama/ollama) | 165,720 | 2026-03-20 | no | +| [`huggingface/transformers`](https://github.com/huggingface/transformers) | 158,154 | 2026-03-20 | no | +| [`langflow-ai/langflow`](https://github.com/langflow-ai/langflow) | 145,966 | 2026-03-21 | no | +| [`langgenius/dify`](https://github.com/langgenius/dify) | 133,770 | 2026-03-21 | no | +| [`langchain-ai/langchain`](https://github.com/langchain-ai/langchain) | 130,416 | 2026-03-20 | no | +| [`open-webui/open-webui`](https://github.com/open-webui/open-webui) | 128,047 | 2026-03-20 | no | +| [`anomalyco/opencode`](https://github.com/anomalyco/opencode) | 126,634 | 2026-03-21 | no | +| [`microsoft/TypeScript`](https://github.com/microsoft/TypeScript) | 108,220 | 2026-03-20 | no | +| [`comfyanonymous/ComfyUI`](https://github.com/Comfy-Org/ComfyUI) | 106,478 | 2026-03-21 | no | +| [`supabase/supabase`](https://github.com/supabase/supabase) | 99,368 | 2026-03-20 | no | +| [`anthropics/skills`](https://github.com/anthropics/skills) | 98,785 | 2026-03-06 | no | +| [`ggerganov/llama.cpp`](https://github.com/ggml-org/llama.cpp) | 98,779 | 2026-03-21 | no | +| [`google-gemini/gemini-cli`](https://github.com/google-gemini/gemini-cli) | 98,524 | 2026-03-21 | no | +| [`openai/whisper`](https://github.com/openai/whisper) | 96,361 | 2025-12-15 | no | +| [`firecrawl/firecrawl`](https://github.com/firecrawl/firecrawl) | 95,811 | 2026-03-21 | no | +| [`mendableai/firecrawl`](https://github.com/firecrawl/firecrawl) | 95,811 | 2026-03-21 | no | +| [`affaan-m/everything-claude-code`](https://github.com/affaan-m/everything-claude-code) | 91,327 | 2026-03-21 | no | +| [`punkpeye/awesome-mcp-servers`](https://github.com/punkpeye/awesome-mcp-servers) | 83,707 | 2026-03-19 | no | +| [`modelcontextprotocol/servers`](https://github.com/modelcontextprotocol/servers) | 81,667 | 2026-03-17 | no | +| [`browser-use/browser-use`](https://github.com/browser-use/browser-use) | 81,509 | 2026-03-20 | no | +| [`anthropics/claude-code`](https://github.com/anthropics/claude-code) | 80,666 | 2026-03-20 | no | +| [`infiniflow/ragflow`](https://github.com/infiniflow/ragflow) | 75,637 | 2026-03-20 | no | ## Tutorials Missing Source Repository Links diff --git a/scripts/add_index_navigation_backlinks.py b/scripts/add_index_navigation_backlinks.py deleted file mode 100644 index 075a40a..0000000 --- a/scripts/add_index_navigation_backlinks.py +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env python3 -"""Add consistent navigation/backlink blocks to tutorial index files.""" - -from __future__ import annotations - -import argparse -import re -from pathlib import Path - -INDEX_NAME = "README.md" -NAV_HEADING = "## Navigation & Backlinks" -GENERATED_MARKER = "*Generated by [AI Codebase Knowledge Builder]" -NUMBERED_FILE_RE = re.compile(r"^([0-9]{2,})[-_].+\.md$") - - -def first_heading(markdown: str) -> str: - for line in markdown.splitlines(): - if line.startswith("# "): - return line[2:].strip() - return "" - - -def chapter_files(tutorial_dir: Path) -> list[Path]: - chapters: list[tuple[int, str, Path]] = [] - for path in tutorial_dir.glob("*.md"): - if path.name == INDEX_NAME: - continue - match = NUMBERED_FILE_RE.match(path.name) - if not match: - continue - number = int(match.group(1)) - chapters.append((number, path.name, path)) - chapters.sort(key=lambda item: (item[0], item[1])) - return [item[2] for item in chapters] - - -def nav_block_for_tutorial(tutorial_dir: Path) -> str: - chapters = chapter_files(tutorial_dir) - if chapters: - first_chapter = chapters[0] - heading = first_heading(first_chapter.read_text(encoding="utf-8", errors="ignore")) - if not heading: - heading = first_chapter.stem.replace("-", " ").replace("_", " ").title() - start_link = f"- [Start Here: {heading}]({first_chapter.name})" - else: - start_link = "- [Browse Tutorial Directory](../../discoverability/tutorial-directory.md)" - - lines = [ - NAV_HEADING, - "", - start_link, - "- [Back to Main Catalog](../../README.md#-tutorial-catalog)", - "- [Browse A-Z Tutorial Directory](../../discoverability/tutorial-directory.md)", - "- [Search by Intent](../../discoverability/query-hub.md)", - "- [Explore Category Hubs](../../README.md#category-hubs)", - ] - return "\n".join(lines) - - -def insert_nav_block(original: str, block: str) -> tuple[str, bool]: - if NAV_HEADING in original: - return original, False - - if GENERATED_MARKER in original: - before, after = original.split(GENERATED_MARKER, 1) - updated = before.rstrip() + "\n\n" + block + "\n\n" + GENERATED_MARKER + after - return updated, True - - updated = original.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def main() -> int: - parser = argparse.ArgumentParser(description="Add navigation/backlink block to tutorial indexes") - parser.add_argument("--root", default=".", help="Repository root") - args = parser.parse_args() - - root = Path(args.root).resolve() - tutorials_root = root / "tutorials" - - updated_count = 0 - skipped_count = 0 - - for tutorial_dir in sorted(p for p in tutorials_root.iterdir() if p.is_dir()): - index_path = tutorial_dir / INDEX_NAME - if not index_path.is_file(): - continue - original = index_path.read_text(encoding="utf-8", errors="ignore") - block = nav_block_for_tutorial(tutorial_dir) - updated, changed = insert_nav_block(original, block) - if changed: - index_path.write_text(updated, encoding="utf-8") - updated_count += 1 - else: - skipped_count += 1 - - print(f"updated_index_count={updated_count}") - print(f"skipped_index_count={skipped_count}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/apply_pocketflow_style_pass.py b/scripts/apply_pocketflow_style_pass.py deleted file mode 100644 index 7b3908e..0000000 --- a/scripts/apply_pocketflow_style_pass.py +++ /dev/null @@ -1,374 +0,0 @@ -#!/usr/bin/env python3 -"""Apply PocketFlow-style documentation enrichment across tutorial docs. - -This pass updates tutorial index and chapter markdown files to improve: -- beginner-friendly framing -- explicit "problem" and "under the hood" sections -- source-driven references -- chapter cross-navigation - -The pass is idempotent by checking for heading presence before insertion. -""" - -from __future__ import annotations - -import argparse -import re -from pathlib import Path - -INDEX_NAME = "README.md" -NUMBERED_FILE_RE = re.compile(r"^([0-9]{2,})[-_].+\.md$") -LINK_RE = re.compile(r"\[([^\]]+)\]\(([^)]+)\)") -GEN_FOOTER = ( - "*Generated by [AI Codebase Knowledge Builder]" - "(https://github.com/The-Pocket/Tutorial-Codebase-Knowledge)*" -) - - -def read_text(path: Path) -> str: - return path.read_text(encoding="utf-8", errors="ignore") - - -def write_text(path: Path, text: str) -> None: - path.write_text(text, encoding="utf-8") - - -def first_h1(markdown: str) -> str: - for line in markdown.splitlines(): - if line.startswith("# "): - return line[2:].strip() - return "" - - -def slug_phrase(value: str) -> str: - return value.replace("-", " ").replace("_", " ").strip() - - -def chapter_records(tutorial_dir: Path) -> list[tuple[int, str, Path]]: - records: list[tuple[int, str, Path]] = [] - for path in tutorial_dir.glob("*.md"): - if path.name == INDEX_NAME: - continue - match = NUMBERED_FILE_RE.match(path.name) - if not match: - continue - records.append((int(match.group(1)), path.name, path)) - records.sort(key=lambda x: (x[0], x[1])) - return records - - -def section_body(markdown: str, heading: str) -> str: - lines = markdown.splitlines() - start = None - for i, line in enumerate(lines): - if line.strip() == heading: - start = i + 1 - break - if start is None: - return "" - end = len(lines) - for j in range(start, len(lines)): - if lines[j].startswith("## "): - end = j - break - return "\n".join(lines[start:end]).strip() - - -def extract_links_from_heading(markdown: str, heading: str, limit: int) -> list[tuple[str, str]]: - chunk = section_body(markdown, heading) - if not chunk: - return [] - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for label, url in LINK_RE.findall(chunk): - label = label.strip() - url = url.strip() - if url in seen: - continue - seen.add(url) - out.append((label, url)) - if len(out) >= limit: - break - return out - - -def extract_github_links(markdown: str, limit: int) -> list[tuple[str, str]]: - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for label, url in LINK_RE.findall(markdown): - if "github.com" not in url: - continue - if url in seen: - continue - seen.add(url) - out.append((label.strip() or "GitHub", url.strip())) - if len(out) >= limit: - break - return out - - -def ensure_index_chapter_map( - index_text: str, - tutorial_dir: Path, - chapter_meta: list[tuple[int, str, Path]], -) -> tuple[str, bool]: - if "## Full Chapter Map" in index_text: - return index_text, False - if not chapter_meta: - return index_text, False - - lines = ["## Full Chapter Map", ""] - for num, filename, path in chapter_meta: - chapter_text = read_text(path) - title = first_h1(chapter_text) or f"Chapter {num}: {slug_phrase(path.stem).title()}" - lines.append(f"{num}. [{title}]({filename})") - block = "\n".join(lines) - updated = index_text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_index_source_refs(index_text: str) -> tuple[str, bool]: - if "## Source References" in index_text: - return index_text, False - - candidates = extract_github_links(index_text, limit=8) - if not candidates: - return index_text, False - - lines = ["## Source References", ""] - for label, url in candidates: - lines.append(f"- [{label}]({url})") - block = "\n".join(lines) - updated = index_text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_index_mermaid(index_text: str, tutorial_title: str) -> tuple[str, bool]: - if "```mermaid" in index_text: - return index_text, False - block = f"""## Concept Flow - -```mermaid -flowchart TD - A[Foundations] --> B[Core Abstractions] - B --> C[Interaction Patterns] - C --> D[Advanced Operations] - D --> E[Production Usage] -``` -""" - updated = index_text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_index_footer(index_text: str) -> tuple[str, bool]: - if "AI Codebase Knowledge Builder" in index_text: - return index_text, False - updated = index_text.rstrip() + "\n\n" + GEN_FOOTER + "\n" - return updated, True - - -def ensure_chapter_intro( - text: str, - chapter_title: str, - tutorial_title: str, -) -> tuple[str, bool]: - lines = text.splitlines() - h1_idx = None - for i, line in enumerate(lines): - if line.startswith("# "): - h1_idx = i - break - if h1_idx is None: - return text, False - - window = "\n".join(lines[h1_idx + 1 : h1_idx + 40]).lower() - if "welcome to" in window: - return text, False - - intro = ( - f"Welcome to **{chapter_title}**. In this part of **{tutorial_title}**, " - "you will build an intuitive mental model first, then move into concrete " - "implementation details and practical production tradeoffs." - ) - insertion = ["", intro, ""] - updated_lines = lines[: h1_idx + 1] + insertion + lines[h1_idx + 1 :] - return "\n".join(updated_lines).rstrip() + "\n", True - - -def ensure_problem_section(text: str, chapter_title: str, tutorial_slug: str) -> tuple[str, bool]: - if "## What Problem Does This Solve?" in text: - return text, False - block = f"""## What Problem Does This Solve? - -Think of this chapter as one subsystem in a larger machine: if this subsystem is unclear, teams build fragile workflows and spend extra time debugging behavior they cannot predict. - -This chapter solves that by giving you: - -- a clear map of responsibilities and boundaries -- practical rules for deciding what belongs in this layer -- repeatable implementation patterns you can apply in real projects -- failure modes to anticipate before they hurt delivery timelines -""" - updated = text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_under_hood_section(text: str, chapter_title: str) -> tuple[str, bool]: - if "## How it Works Under the Hood" in text: - return text, False - block = f"""## How it Works Under the Hood - -At runtime, this chapter's system behavior typically follows a predictable lifecycle: - -1. **Input acquisition**: collect user intent, configuration, and execution context. -2. **Validation and normalization**: enforce schema constraints and defaults. -3. **Execution orchestration**: route requests through the correct abstraction boundary. -4. **State transitions**: persist or cache critical state for continuity. -5. **Output handling**: return results with error metadata and observability hooks. -6. **Operational safeguards**: enforce retries, backoff, and rollback triggers when needed. - -Use this lifecycle as your debugging checklist whenever behavior diverges from expectations. -""" - updated = text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_source_walkthrough( - text: str, - source_links: list[tuple[str, str]], -) -> tuple[str, bool]: - if "## Source Walkthrough" in text: - return text, False - - lines = ["## Source Walkthrough", ""] - if source_links: - lines.append("Use these upstream sources for deeper validation and implementation detail:") - lines.append("") - for label, url in source_links: - lines.append(f"- [{label}]({url})") - else: - lines.append("Source references are defined in the tutorial index and should be reviewed before production rollout.") - - block = "\n".join(lines) - updated = text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def ensure_chapter_connections( - text: str, - tutorial_dir: Path, - chapter_meta: list[tuple[int, str, Path]], - current_idx: int, -) -> tuple[str, bool]: - if "## Chapter Connections" in text: - return text, False - - _, current_filename, _ = chapter_meta[current_idx] - prev_link = None - next_link = None - if current_idx > 0: - _, prev_filename, prev_path = chapter_meta[current_idx - 1] - prev_title = first_h1(read_text(prev_path)) or prev_filename - prev_link = (prev_title, prev_filename) - if current_idx + 1 < len(chapter_meta): - _, next_filename, next_path = chapter_meta[current_idx + 1] - next_title = first_h1(read_text(next_path)) or next_filename - next_link = (next_title, next_filename) - - lines = ["## Chapter Connections", "", f"- [Tutorial Index]({INDEX_NAME})"] - if prev_link: - lines.append(f"- [Previous Chapter: {prev_link[0]}]({prev_link[1]})") - if next_link: - lines.append(f"- [Next Chapter: {next_link[0]}]({next_link[1]})") - lines.extend( - [ - "- [Main Catalog](../../README.md#-tutorial-catalog)", - "- [A-Z Tutorial Directory](../../discoverability/tutorial-directory.md)", - ] - ) - - block = "\n".join(lines) - updated = text.rstrip() + "\n\n" + block + "\n" - return updated, True - - -def process_tutorial_dir(tutorial_dir: Path) -> tuple[int, int]: - changed_files = 0 - examined_files = 0 - - index_path = tutorial_dir / INDEX_NAME - if not index_path.is_file(): - return changed_files, examined_files - - index_text = read_text(index_path) - tutorial_title = first_h1(index_text) or slug_phrase(tutorial_dir.name).title() - chapters = chapter_records(tutorial_dir) - - idx_changed = False - for fn in ( - lambda text: ensure_index_chapter_map(text, tutorial_dir, chapters), - ensure_index_source_refs, - lambda text: ensure_index_mermaid(text, tutorial_title), - ensure_index_footer, - ): - index_text, changed = fn(index_text) - idx_changed = idx_changed or changed - if idx_changed: - write_text(index_path, index_text) - changed_files += 1 - examined_files += 1 - - source_links = extract_links_from_heading(index_text, "## Source References", limit=8) - if not source_links: - source_links = extract_github_links(index_text, limit=8) - - for i, (_, _, chapter_path) in enumerate(chapters): - text = read_text(chapter_path) - chapter_title = first_h1(text) or slug_phrase(chapter_path.stem).title() - chapter_changed = False - - for fn in ( - lambda t: ensure_chapter_intro(t, chapter_title, tutorial_title), - lambda t: ensure_problem_section(t, chapter_title, tutorial_dir.name), - lambda t: ensure_under_hood_section(t, chapter_title), - lambda t: ensure_source_walkthrough(t, source_links), - lambda t: ensure_chapter_connections(t, tutorial_dir, chapters, i), - ): - text, changed = fn(text) - chapter_changed = chapter_changed or changed - - if chapter_changed: - write_text(chapter_path, text) - changed_files += 1 - examined_files += 1 - - return changed_files, examined_files - - -def main() -> int: - parser = argparse.ArgumentParser(description="Apply PocketFlow style pass to tutorial docs") - parser.add_argument("--root", default=".", help="Repository root") - args = parser.parse_args() - - root = Path(args.root).resolve() - tutorials_root = root / "tutorials" - - total_changed = 0 - total_examined = 0 - tutorial_count = 0 - - for tutorial_dir in sorted(p for p in tutorials_root.iterdir() if p.is_dir()): - changed, examined = process_tutorial_dir(tutorial_dir) - total_changed += changed - total_examined += examined - if examined: - tutorial_count += 1 - - print(f"tutorials_processed={tutorial_count}") - print(f"files_examined={total_examined}") - print(f"files_changed={total_changed}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/clean_source_references.py b/scripts/clean_source_references.py deleted file mode 100644 index b357902..0000000 --- a/scripts/clean_source_references.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 -"""Clean low-signal links from tutorial index source reference sections.""" - -from __future__ import annotations - -import argparse -import re -from pathlib import Path - -SECTION_PATTERN = re.compile(r"(^## Source References\n\n)(.*?)(?=^## |\Z)", re.S | re.M) -LINK_RE = re.compile(r"\[([^\]]+)\]\(([^)]+)\)") -IGNORED_URL_PARTS = ( - "github.com/The-Pocket/Tutorial-Codebase-Knowledge", -) - - -def read(path: Path) -> str: - return path.read_text(encoding="utf-8", errors="ignore") - - -def write(path: Path, text: str) -> None: - path.write_text(text, encoding="utf-8") - - -def extract_fallback_links(full_text: str, limit: int = 6) -> list[tuple[str, str]]: - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for label, url in LINK_RE.findall(full_text): - if any(part in url for part in IGNORED_URL_PARTS): - continue - if "github.com" not in url and "docs." not in url and "help." not in url: - continue - if url in seen: - continue - seen.add(url) - out.append((label.strip(), url.strip())) - if len(out) >= limit: - break - return out - - -def clean_source_section(text: str) -> tuple[str, bool]: - match = SECTION_PATTERN.search(text) - if not match: - return text, False - - prefix = match.group(1) - body = match.group(2) - lines = body.splitlines() - cleaned_lines: list[str] = [] - changed = False - - for line in lines: - low = line.lower() - if any(part.lower() in low for part in IGNORED_URL_PARTS): - changed = True - continue - cleaned_lines.append(line) - - bullets = [ln for ln in cleaned_lines if ln.strip().startswith("- [")] - if not bullets: - fallback = extract_fallback_links(text, limit=6) - if fallback: - cleaned_lines = [f"- [{label}]({url})" for label, url in fallback] - changed = True - - new_body = "\n".join(cleaned_lines).strip() - new_text = text[: match.start()] + prefix + new_body + "\n\n" + text[match.end() :] - return new_text, changed - - -def main() -> int: - parser = argparse.ArgumentParser(description="Clean tutorial index source references") - parser.add_argument("--root", default=".", help="Repository root") - args = parser.parse_args() - - root = Path(args.root).resolve() - tutorials = root / "tutorials" - - changed_files = 0 - for tutorial_dir in sorted(p for p in tutorials.iterdir() if p.is_dir()): - idx = tutorial_dir / "README.md" - if not idx.is_file(): - continue - text = read(idx) - new_text, changed = clean_source_section(text) - if changed: - write(idx, new_text) - changed_files += 1 - - print(f"changed_index_files={changed_files}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/contextualize_chapter_sections.py b/scripts/contextualize_chapter_sections.py deleted file mode 100644 index f7fb048..0000000 --- a/scripts/contextualize_chapter_sections.py +++ /dev/null @@ -1,317 +0,0 @@ -#!/usr/bin/env python3 -"""Contextualize generic chapter sections added by bulk style passes. - -Targets these sections when they match generic boilerplate: -- ## What Problem Does This Solve? -- ## How it Works Under the Hood -- ## Source Walkthrough -""" - -from __future__ import annotations - -import argparse -import re -from collections import Counter -from pathlib import Path -from urllib.parse import urlparse - -NUMBERED_FILE_RE = re.compile(r"^([0-9]{2,})[-_].+\.md$") -LINK_RE = re.compile(r"\[([^\]]+)\]\(([^)]+)\)") -SECTION_RE_TEMPLATE = r"(^## {heading}\n\n)(.*?)(?=^## |\Z)" -CODE_BLOCK_RE = re.compile(r"```[a-zA-Z0-9_-]*\n(.*?)```", re.S) -IDENT_RE = re.compile(r"\b[A-Za-z_][A-Za-z0-9_]{3,}\b") -STOPWORDS = { - "this", - "that", - "with", - "from", - "return", - "class", - "const", - "async", - "await", - "function", - "import", - "export", - "string", - "number", - "boolean", - "public", - "private", - "default", - "value", - "data", - "type", - "true", - "false", - "null", - "undefined", - "chapter", - "tutorial", -} -IGNORED_SOURCE_URL_PARTS = ( - "github.com/The-Pocket/Tutorial-Codebase-Knowledge", -) - -GENERIC_PROBLEM_HINT = "Think of this chapter as one subsystem in a larger machine" -GENERIC_UNDER_HOOD_HINT = "At runtime, this chapter's system behavior typically follows a predictable lifecycle" -GENERIC_SOURCE_HINT = "Use these upstream sources for deeper validation and implementation detail" - - -def read_text(path: Path) -> str: - return path.read_text(encoding="utf-8", errors="ignore") - - -def write_text(path: Path, text: str) -> None: - path.write_text(text, encoding="utf-8") - - -def first_h1(text: str) -> str: - for line in text.splitlines(): - if line.startswith("# "): - return line[2:].strip() - return "" - - -def slug_phrase(text: str) -> str: - return text.replace("-", " ").replace("_", " ").strip() - - -def chapter_files(tutorial_dir: Path) -> list[Path]: - out: list[tuple[int, str, Path]] = [] - for path in tutorial_dir.glob("*.md"): - if path.name == "README.md": - continue - match = NUMBERED_FILE_RE.match(path.name) - if not match: - continue - out.append((int(match.group(1)), path.name, path)) - out.sort(key=lambda x: (x[0], x[1])) - return [p for _, _, p in out] - - -def extract_source_refs(index_text: str, limit: int = 8) -> list[tuple[str, str]]: - section = extract_section_body(index_text, "Source References") - if not section: - section = index_text - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for label, url in LINK_RE.findall(section): - label = label.strip() - url = url.strip() - if any(part in url for part in IGNORED_SOURCE_URL_PARTS): - continue - if url in seen: - continue - seen.add(url) - out.append((label, url)) - if len(out) >= limit: - break - return out - - -def extract_section_body(text: str, heading: str) -> str: - pattern = re.compile(SECTION_RE_TEMPLATE.format(heading=re.escape(heading)), re.S | re.M) - match = pattern.search(text) - return match.group(2).strip() if match else "" - - -def replace_section_body(text: str, heading: str, new_body: str) -> tuple[str, bool]: - pattern = re.compile(SECTION_RE_TEMPLATE.format(heading=re.escape(heading)), re.S | re.M) - match = pattern.search(text) - if not match: - return text, False - new = text[: match.start(2)] + new_body.strip() + "\n\n" + text[match.end(2) :] - return new, True - - -def top_identifiers(chapter_text: str, limit: int = 6) -> list[str]: - counts: Counter[str] = Counter() - for block in CODE_BLOCK_RE.findall(chapter_text): - for token in IDENT_RE.findall(block): - if token.lower() in STOPWORDS: - continue - if token.isupper() and len(token) > 12: - continue - counts[token] += 1 - out: list[str] = [] - for token, _ in counts.most_common(): - if token not in out: - out.append(token) - if len(out) >= limit: - break - return out - - -def title_tokens(chapter_title: str, limit: int = 6) -> list[str]: - raw = re.findall(r"[A-Za-z][A-Za-z0-9_-]+", chapter_title) - out: list[str] = [] - for token in raw: - low = token.lower() - if low in STOPWORDS: - continue - if token.lower().startswith("chapter"): - continue - if token.isdigit(): - continue - out.append(token) - if len(out) >= limit: - break - return out - - -def domain_label(url: str) -> str: - parsed = urlparse(url) - return parsed.netloc or url - - -def build_problem_body( - chapter_title: str, - tutorial_title: str, - identifiers: list[str], - fallback_terms: list[str], -) -> str: - id_terms = identifiers if identifiers else fallback_terms - focus = ", ".join(f"`{x}`" for x in id_terms[:3]) if id_terms else "core abstractions in this chapter" - ops_terms = id_terms[3:6] if len(id_terms) > 3 else id_terms[:3] - ops = ", ".join(f"`{x}`" for x in ops_terms) if ops_terms else "execution and reliability details" - return f"""Most teams struggle here because the hard part is not writing more code, but deciding clear boundaries for {focus} so behavior stays predictable as complexity grows. - -In practical terms, this chapter helps you avoid three common failures: - -- coupling core logic too tightly to one implementation path -- missing the handoff boundaries between setup, execution, and validation -- shipping changes without clear rollback or observability strategy - -After working through this chapter, you should be able to reason about `{chapter_title}` as an operating subsystem inside **{tutorial_title}**, with explicit contracts for inputs, state transitions, and outputs. - -Use the implementation notes around {ops} as your checklist when adapting these patterns to your own repository.""" - - -def build_under_hood_body( - chapter_title: str, - identifiers: list[str], - fallback_terms: list[str], -) -> str: - terms = identifiers if identifiers else fallback_terms - id_a = terms[0] if len(terms) > 0 else "control layer" - id_b = terms[1] if len(terms) > 1 else "execution path" - id_c = terms[2] if len(terms) > 2 else "state transitions" - return f"""Under the hood, `{chapter_title}` usually follows a repeatable control path: - -1. **Context bootstrap**: initialize runtime config and prerequisites for `{id_a}`. -2. **Input normalization**: shape incoming data so `{id_b}` receives stable contracts. -3. **Core execution**: run the main logic branch and propagate intermediate state through `{id_c}`. -4. **Policy and safety checks**: enforce limits, auth scopes, and failure boundaries. -5. **Output composition**: return canonical result payloads for downstream consumers. -6. **Operational telemetry**: emit logs/metrics needed for debugging and performance tuning. - -When debugging, walk this sequence in order and confirm each stage has explicit success/failure conditions.""" - - -def build_source_walkthrough_body( - source_refs: list[tuple[str, str]], - identifiers: list[str], - fallback_terms: list[str], -) -> str: - lines = [ - "Use the following upstream sources to verify implementation details while reading this chapter:", - "", - ] - for label, url in source_refs[:8]: - lines.append(f"- [{label}]({url})") - lines.append(f" Why it matters: authoritative reference on `{label}` ({domain_label(url)}).") - if not source_refs: - lines.append("- No explicit source links were found in the tutorial index; trace the upstream repository README and docs first.") - terms = identifiers if identifiers else fallback_terms - if terms: - lines.extend( - [ - "", - "Suggested trace strategy:", - f"- search upstream code for `{terms[0]}` and `{terms[min(1, len(terms)-1)]}` to map concrete implementation paths", - "- compare docs claims against actual runtime/config code before reusing patterns in production", - ] - ) - return "\n".join(lines).strip() - - -def should_replace_problem(body: str) -> bool: - return (GENERIC_PROBLEM_HINT in body) or len(body.splitlines()) <= 8 - - -def should_replace_under_hood(body: str) -> bool: - return (GENERIC_UNDER_HOOD_HINT in body) or len(body.splitlines()) <= 8 - - -def should_replace_source(body: str) -> bool: - if any(part in body for part in IGNORED_SOURCE_URL_PARTS): - return True - return (GENERIC_SOURCE_HINT in body) or len(body.splitlines()) <= 4 - - -def process_chapter( - chapter_path: Path, - tutorial_title: str, - source_refs: list[tuple[str, str]], -) -> bool: - text = read_text(chapter_path) - chapter_title = first_h1(text) or slug_phrase(chapter_path.stem).title() - identifiers = top_identifiers(text, limit=6) - fallback_terms = title_tokens(chapter_title, limit=6) - changed_any = False - - problem_body = extract_section_body(text, "What Problem Does This Solve?") - if problem_body and should_replace_problem(problem_body): - new_problem = build_problem_body(chapter_title, tutorial_title, identifiers, fallback_terms) - text, changed = replace_section_body(text, "What Problem Does This Solve?", new_problem) - changed_any = changed_any or changed - - under_body = extract_section_body(text, "How it Works Under the Hood") - if under_body and should_replace_under_hood(under_body): - new_under = build_under_hood_body(chapter_title, identifiers, fallback_terms) - text, changed = replace_section_body(text, "How it Works Under the Hood", new_under) - changed_any = changed_any or changed - - source_body = extract_section_body(text, "Source Walkthrough") - if source_body and should_replace_source(source_body): - new_source = build_source_walkthrough_body(source_refs, identifiers, fallback_terms) - text, changed = replace_section_body(text, "Source Walkthrough", new_source) - changed_any = changed_any or changed - - if changed_any: - write_text(chapter_path, text) - return changed_any - - -def main() -> int: - parser = argparse.ArgumentParser(description="Contextualize generic chapter sections") - parser.add_argument("--root", default=".", help="Repository root") - args = parser.parse_args() - - root = Path(args.root).resolve() - tutorials_root = root / "tutorials" - - chapter_total = 0 - chapter_changed = 0 - - for tutorial_dir in sorted(p for p in tutorials_root.iterdir() if p.is_dir()): - index_path = tutorial_dir / "README.md" - if not index_path.is_file(): - continue - index_text = read_text(index_path) - tutorial_title = first_h1(index_text) or slug_phrase(tutorial_dir.name).title() - source_refs = extract_source_refs(index_text, limit=8) - - for chapter_path in chapter_files(tutorial_dir): - chapter_total += 1 - if process_chapter(chapter_path, tutorial_title, source_refs): - chapter_changed += 1 - - print(f"chapter_total={chapter_total}") - print(f"chapter_changed={chapter_changed}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/scripts/deepen_v2_chapters.py b/scripts/deepen_v2_chapters.py deleted file mode 100644 index 0d777b4..0000000 --- a/scripts/deepen_v2_chapters.py +++ /dev/null @@ -1,368 +0,0 @@ -#!/usr/bin/env python3 -"""Deepen v2 tutorial chapters to a target line count. - -Adds contextual depth sections to short chapter files using index metadata: -- tutorial title -- source references -- related tutorials - -This script is idempotent: -- if a chapter already contains the depth marker, it will only append additional - scenario blocks when still below target. -""" - -from __future__ import annotations - -import argparse -import math -import re -from pathlib import Path - -INDEX_FILE = "README.md" -DEPTH_MARKER = "" -NUMBERED_FILE_RE = re.compile(r"^([0-9]{2,})[-_].+\.md$") -LINK_RE = re.compile(r"\[([^\]]+)\]\(([^)]+)\)") - - -def line_count(text: str) -> int: - return len(text.splitlines()) - - -def first_heading(markdown: str) -> str: - for line in markdown.splitlines(): - if line.startswith("# "): - return line[2:].strip() - return "" - - -def slug_to_phrase(slug: str) -> str: - return slug.replace("-", " ").replace("_", " ").strip() - - -def section_slice(markdown: str, heading: str) -> str: - lines = markdown.splitlines() - start = None - for i, line in enumerate(lines): - if line.strip() == heading: - start = i + 1 - break - if start is None: - return "" - end = len(lines) - for j in range(start, len(lines)): - if lines[j].startswith("## "): - end = j - break - return "\n".join(lines[start:end]).strip() - - -def extract_links(markdown: str, heading: str, limit: int) -> list[tuple[str, str]]: - chunk = section_slice(markdown, heading) - if not chunk: - return [] - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for label, url in LINK_RE.findall(chunk): - if url in seen: - continue - seen.add(url) - out.append((label.strip(), url.strip())) - if len(out) >= limit: - break - return out - - -def chapter_paths(tutorial_dir: Path) -> list[Path]: - out: list[tuple[int, str, Path]] = [] - for path in tutorial_dir.glob("*.md"): - if path.name == INDEX_FILE: - continue - m = NUMBERED_FILE_RE.match(path.name) - if not m: - continue - out.append((int(m.group(1)), path.name, path)) - out.sort(key=lambda x: (x[0], x[1])) - return [p for _, _, p in out] - - -def chapter_topic(chapter_path: Path, text: str) -> str: - heading = first_heading(text) - if heading: - return heading - stem = chapter_path.stem - return slug_to_phrase(stem).title() - - -def build_base_block( - tutorial_title: str, - tutorial_slug: str, - chapter_title: str, - source_links: list[tuple[str, str]], - related_links: list[tuple[str, str]], -) -> str: - source_lines = "\n".join( - f"- [{label}]({url})" - for label, url in source_links - ) or "- Source references are tracked in this tutorial index." - - related_lines = "\n".join( - f"- [{label}]({url})" - for label, url in related_links - ) or "- Related tutorials are listed in this tutorial index." - - tutorial_context = slug_to_phrase(tutorial_slug).title() - - return f""" -## Depth Expansion Playbook - -{DEPTH_MARKER} - -This chapter is expanded to v1-style depth for production-grade learning and implementation quality. - -### Strategic Context - -- tutorial: **{tutorial_title}** -- tutorial slug: **{tutorial_slug}** -- chapter focus: **{chapter_title}** -- system context: **{tutorial_context}** -- objective: move from surface-level usage to repeatable engineering operation - -### Architecture Decomposition - -1. Define the runtime boundary for `{chapter_title}`. -2. Separate control-plane decisions from data-plane execution. -3. Capture input contracts, transformation points, and output contracts. -4. Trace state transitions across request lifecycle stages. -5. Identify extension hooks and policy interception points. -6. Map ownership boundaries for team and automation workflows. -7. Specify rollback and recovery paths for unsafe changes. -8. Track observability signals for correctness, latency, and cost. - -### Operator Decision Matrix - -| Decision Area | Low-Risk Path | High-Control Path | Tradeoff | -|:--------------|:--------------|:------------------|:---------| -| Runtime mode | managed defaults | explicit policy config | speed vs control | -| State handling | local ephemeral | durable persisted state | simplicity vs auditability | -| Tool integration | direct API use | mediated adapter layer | velocity vs governance | -| Rollout method | manual change | staged + canary rollout | effort vs safety | -| Incident response | best effort logs | runbooks + SLO alerts | cost vs reliability | - -### Failure Modes and Countermeasures - -| Failure Mode | Early Signal | Root Cause Pattern | Countermeasure | -|:-------------|:-------------|:-------------------|:---------------| -| stale context | inconsistent outputs | missing refresh window | enforce context TTL and refresh hooks | -| policy drift | unexpected execution | ad hoc overrides | centralize policy profiles | -| auth mismatch | 401/403 bursts | credential sprawl | rotation schedule + scope minimization | -| schema breakage | parser/validation errors | unmanaged upstream changes | contract tests per release | -| retry storms | queue congestion | no backoff controls | jittered backoff + circuit breakers | -| silent regressions | quality drop without alerts | weak baseline metrics | eval harness with thresholds | - -### Implementation Runbook - -1. Establish a reproducible baseline environment. -2. Capture chapter-specific success criteria before changes. -3. Implement minimal viable path with explicit interfaces. -4. Add observability before expanding feature scope. -5. Run deterministic tests for happy-path behavior. -6. Inject failure scenarios for negative-path validation. -7. Compare output quality against baseline snapshots. -8. Promote through staged environments with rollback gates. -9. Record operational lessons in release notes. - -### Quality Gate Checklist - -- [ ] chapter-level assumptions are explicit and testable -- [ ] API/tool boundaries are documented with input/output examples -- [ ] failure handling includes retry, timeout, and fallback policy -- [ ] security controls include auth scopes and secret rotation plans -- [ ] observability includes logs, metrics, traces, and alert thresholds -- [ ] deployment guidance includes canary and rollback paths -- [ ] docs include links to upstream sources and related tracks -- [ ] post-release verification confirms expected behavior under load - -### Source Alignment - -{source_lines} - -### Cross-Tutorial Connection Map - -{related_lines} - -### Advanced Practice Exercises - -1. Build a minimal end-to-end implementation for `{chapter_title}`. -2. Add instrumentation and measure baseline latency and error rate. -3. Introduce one controlled failure and confirm graceful recovery. -4. Add policy constraints and verify they are enforced consistently. -5. Run a staged rollout and document rollback decision criteria. - -### Review Questions - -1. Which execution boundary matters most for this chapter and why? -2. What signal detects regressions earliest in your environment? -3. What tradeoff did you make between delivery speed and governance? -4. How would you recover from the highest-impact failure mode? -5. What must be automated before scaling to team-wide adoption? -""".strip() - - -def build_scenario_block( - tutorial_title: str, - chapter_title: str, - i: int, -) -> str: - trigger_patterns = [ - "incoming request volume spikes after release", - "tool dependency latency increases under concurrency", - "schema updates introduce incompatible payloads", - "environment parity drifts between staging and production", - "access policy changes reduce successful execution rates", - "background jobs accumulate and exceed processing windows", - ] - validations = [ - "latency p95 and p99 stay within defined SLO windows", - "error budget burn rate remains below escalation threshold", - "throughput remains stable under target concurrency", - "retry volume stays bounded without feedback loops", - "data integrity checks pass across write/read cycles", - "audit logs capture all control-plane mutations", - ] - controls = [ - "introduce adaptive concurrency limits and queue bounds", - "enable staged retries with jitter and circuit breaker fallback", - "pin schema versions and add compatibility shims", - "restore environment parity via immutable config promotion", - "re-scope credentials and rotate leaked or stale keys", - "activate degradation mode to preserve core user paths", - ] - - trigger = trigger_patterns[(i - 1) % len(trigger_patterns)] - validation = validations[(i - 1) % len(validations)] - control = controls[(i - 1) % len(controls)] - - return f""" -### Scenario Playbook {i}: {chapter_title} - -- tutorial context: **{tutorial_title}** -- trigger condition: {trigger} -- initial hypothesis: identify the smallest reproducible failure boundary -- immediate action: protect user-facing stability before optimization work -- engineering control: {control} -- verification target: {validation} -- rollback trigger: pre-defined quality gate fails for two consecutive checks -- communication step: publish incident status with owner and ETA -- learning capture: add postmortem and convert findings into automated tests -""".strip() - - -def add_depth_to_chapter( - chapter_path: Path, - tutorial_title: str, - tutorial_slug: str, - source_links: list[tuple[str, str]], - related_links: list[tuple[str, str]], - target_lines: int, -) -> tuple[bool, int, int]: - original = chapter_path.read_text(encoding="utf-8", errors="ignore") - before = line_count(original) - if before >= target_lines: - return False, before, before - - chapter_title = chapter_topic(chapter_path, original) - text = original.rstrip() - - added_sections: list[str] = [] - - if DEPTH_MARKER not in text: - added_sections.append( - build_base_block( - tutorial_title=tutorial_title, - tutorial_slug=tutorial_slug, - chapter_title=chapter_title, - source_links=source_links, - related_links=related_links, - ) - ) - - provisional = text + "\n\n" + "\n\n".join(added_sections) if added_sections else text - remaining = target_lines - line_count(provisional) - - scenario_index = 1 - while remaining > 0: - scenario = build_scenario_block( - tutorial_title=tutorial_title, - chapter_title=chapter_title, - i=scenario_index, - ) - added_sections.append(scenario) - provisional = text + "\n\n" + "\n\n".join(added_sections) - remaining = target_lines - line_count(provisional) - scenario_index += 1 - - updated = text + "\n\n" + "\n\n".join(added_sections) + "\n" - after = line_count(updated) - chapter_path.write_text(updated, encoding="utf-8") - return True, before, after - - -def tutorial_title_from_index(index_text: str, tutorial_dir: Path) -> str: - heading = first_heading(index_text) - if heading: - return heading - return slug_to_phrase(tutorial_dir.name).title() - - -def main() -> int: - parser = argparse.ArgumentParser(description="Deepen v2 chapter files to target line counts") - parser.add_argument("--root", default=".", help="Repository root") - parser.add_argument("--target-lines", type=int, default=580, help="Minimum line count for each v2 chapter") - args = parser.parse_args() - - root = Path(args.root).resolve() - tutorials_root = root / "tutorials" - - touched_files = 0 - skipped_files = 0 - added_lines = 0 - processed_v2_tutorials = 0 - - for tutorial_dir in sorted(p for p in tutorials_root.iterdir() if p.is_dir()): - index_path = tutorial_dir / INDEX_FILE - if not index_path.is_file(): - continue - index_text = index_path.read_text(encoding="utf-8", errors="ignore") - if "format_version: v2" not in index_text: - continue - processed_v2_tutorials += 1 - - tutorial_title = tutorial_title_from_index(index_text, tutorial_dir) - source_links = extract_links(index_text, "## Source References", limit=8) - related_links = extract_links(index_text, "## Related Tutorials", limit=8) - - for chapter_path in chapter_paths(tutorial_dir): - changed, before, after = add_depth_to_chapter( - chapter_path=chapter_path, - tutorial_title=tutorial_title, - tutorial_slug=tutorial_dir.name, - source_links=source_links, - related_links=related_links, - target_lines=args.target_lines, - ) - if changed: - touched_files += 1 - added_lines += max(0, after - before) - else: - skipped_files += 1 - - print(f"processed_v2_tutorials={processed_v2_tutorials}") - print(f"touched_chapter_files={touched_files}") - print(f"skipped_chapter_files={skipped_files}") - print(f"added_lines={added_lines}") - print(f"target_lines={args.target_lines}") - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/tutorials/taskade-tutorial/README.md b/tutorials/taskade-tutorial/README.md index a1380fa..6f5eff2 100644 --- a/tutorials/taskade-tutorial/README.md +++ b/tutorials/taskade-tutorial/README.md @@ -60,7 +60,7 @@ flowchart LR - integration surfaces including API and MCP-based agent tooling - enterprise controls for security, auditability, and organizational scaling -## Imported Help-Center Knowledge Base (verified 2026-02-24) +## Imported Help-Center Knowledge Base (verified 2026-03-20) This track is now aligned with the official Help Center pillar model and onboarding guidance: @@ -70,7 +70,7 @@ This track is now aligned with the official Help Center pillar model and onboard - [Custom AI Agents: The Intelligence Pillar](https://help.taskade.com/en/articles/8958457-custom-ai-agents-the-intelligence-pillar) -> agent creation, training, tooling, and command modes - [Automations: The Execution Pillar](https://help.taskade.com/en/articles/8958467-automations-the-execution-pillar) -> trigger/action/variable automation model and generator modes -## Imported Newsletter Signals (verified 2026-02-24) +## Imported Newsletter Signals (verified 2026-03-20) Recent newsletter pages were imported to keep this track aligned with product evolution signals: