{"adoption": {"forks": 221, "observed_at": "2026-08-28T04:05:26.078590+00:00", "stars": 1715}, "canonical_url": "https://ross.abutalabs.com/products/learn-opencode", "card": {"archived": false, "artifact_type": "learning-resource", "description": "OpenCode 中文实战课源码与内容仓库：一课一页，覆盖入门到实战工作流。", "domain": ["tutorials", "developer-tools", "artificial-intelligence", "education"], "enriched": true, "function": ["developer-tools", "documentation", "agent-framework", "prompt-engineering"], "health_score": 80, "homepage": "https://learnopencode.com/", "language": "Shell", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["vbgate/learn-opencode"], "name": "vbgate/learn-opencode", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-25T04:56:55+00:00", "repo": "vbgate/learn-opencode", "stars": 1715, "tags": ["opencode", "chinese-tutorial", "ai-coding-assistant", "free-course", "prompt-templates", "hands-on-projects", "vitepress", "ai-agents", "web"], "topics": ["opencode", "opencode-ai", "opencode-cluster", "opencode-plugin", "opencode-plugins"], "urls": [], "use_cases": ["learn how to use OpenCode AI coding agent from scratch", "set up OpenCode with Chinese LLM providers like DeepSeek or Zhipu", "build AI-assisted content creation workflows for blogs and social media", "use AI agents to refactor, test, and document code", "customize OpenCode with custom agents, skills, commands, and MCP extensions", "automate file organization and data processing with AI", "find ready-to-use prompt templates for AI coding tasks"], "what_it_is": "A free, open-source Chinese-language course (with full source content) teaching OpenCode, an AI coding agent, from beginner setup to advanced workflows like custom agents, skills, and MCP extensions. It is structured as one lesson per page with 18 hands-on projects, 20+ prompt templates, and study notes, published as a VitePress site.", "when_to_avoid": ["you need official OpenCode documentation rather than a third-party course", "you want an English-language tutorial", "you already have advanced OpenCode experience and only need API reference material"], "when_to_choose": ["you are a Chinese-speaking beginner wanting a structured, free OpenCode tutorial", "you want practice-oriented lessons with projects and prompt templates", "you need direct connectivity to domestic Chinese LLM providers without network hassle"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/learn-opencode", "repo": "vbgate/learn-opencode", "role": "main", "score": 60}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:26.078590+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:34:37.057185+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3358b4e1103318f6b5540402280e3959563aed43705b281c36907a08086b81ba", "fetched_at": "2026-08-28T04:05:26.078590+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vbgate/learn-opencode"}, {"content_hash": "878f2578788260184e557027e11a1f5b1a0d3559dad33138b491afdb083a58b0", "fetched_at": "2026-08-29T11:10:28.929193+00:00", "kind": "homepage", "missing": false, "url": "https://learnopencode.com/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 17, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 238, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 60, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}