hackstoic/golang-open-source-projects
为互联网IT人打造的中文版awesome-go
Missing license — unclear to depend on
weakest axisno license — legally unclear; no tests detected…
no license — can't legally use code; no tests detected…
Documented and popular — useful reference codebase to read through.
no license — can't legally use code; no CI workflows detected
- ✓Last commit 2mo ago
- ✓14 active contributors
- ⚠Concentrated ownership — top contributor handles 51% of recent commits
Show all 6 evidence items →Show less
- ⚠No license — legally unclear to depend on
- ⚠No CI workflows detected
- ⚠No test directory detected
What would change the summary?
- →Use as dependency Concerns → Mixed if: publish a permissive license (MIT, Apache-2.0, etc.)
- →Fork & modify Concerns → Mixed if: add a LICENSE file
- →Deploy as-is Concerns → Mixed if: add a LICENSE file
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Great to learn from" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/hackstoic/golang-open-source-projects)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/hackstoic/golang-open-source-projects on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: hackstoic/golang-open-source-projects
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/hackstoic/golang-open-source-projects shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Missing license — unclear to depend on
- Last commit 2mo ago
- 14 active contributors
- ⚠ Concentrated ownership — top contributor handles 51% of recent commits
- ⚠ No license — legally unclear to depend on
- ⚠ No CI workflows detected
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live hackstoic/golang-open-source-projects
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/hackstoic/golang-open-source-projects.
What it runs against: a local clone of hackstoic/golang-open-source-projects — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in hackstoic/golang-open-source-projects | Confirms the artifact applies here, not a fork |
| 2 | Default branch master exists | Catches branch renames |
| 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 4 | Last commit ≤ 92 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of hackstoic/golang-open-source-projects. If you don't
# have one yet, run these first:
#
# git clone https://github.com/hackstoic/golang-open-source-projects.git
# cd golang-open-source-projects
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of hackstoic/golang-open-source-projects and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "hackstoic/golang-open-source-projects(\\.git)?\\b" \\
&& ok "origin remote is hackstoic/golang-open-source-projects" \\
|| miss "origin remote is not hackstoic/golang-open-source-projects (artifact may be from a fork)"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f "projects.json" \\
&& ok "projects.json" \\
|| miss "missing critical file: projects.json"
test -f "README.md" \\
&& ok "README.md" \\
|| miss "missing critical file: README.md"
test -f "docs/分类与维护策略.md" \\
&& ok "docs/分类与维护策略.md" \\
|| miss "missing critical file: docs/分类与维护策略.md"
test -f "tools/generate_readme.go" \\
&& ok "tools/generate_readme.go" \\
|| miss "missing critical file: tools/generate_readme.go"
test -f "docs/移除与迁移记录.md" \\
&& ok "docs/移除与迁移记录.md" \\
|| miss "missing critical file: docs/移除与迁移记录.md"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 92 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~62d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/hackstoic/golang-open-source-projects"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
A curated Chinese-language directory of maintained Go open-source projects, organized into 10 thematic categories (AI/Agent, cloud-native, observability, web frameworks, etc.) with ~75 actively maintained projects as of 2026-03-06. It's a curation tool that emphasizes learning and technology selection over exhaustive coverage, replacing the older sprawling 17-category awesome-go list with quality over quantity and a focus on projects still under active maintenance. Simple flat structure: projects.json holds all project metadata keyed by category; docs/ contains maintenance and curation policies; tools/generate_readme.go is a Go utility that renders projects.json into the markdown README. No complex monorepo or build pipeline—just static data + a generator script.
👥Who it's for
Chinese-speaking Go developers and architects who need a curated, categorized starting point for technology selection and learning—people tired of unmaintained projects in generic awesome lists and seeking recommendations scoped to active, production-grade Go libraries and platforms.
🌱Maturity & risk
Actively maintained reference material, last reviewed 2026-03-06. The repo is intentionally small (75 projects across 10 categories) rather than exhaustive, which is a design choice, not a sign of immaturity. Backed by explicit maintenance strategy docs (docs/分类与维护策略.md) and migration records (docs/移除与迁移记录.md), indicating thoughtful curation. However, this is a curated index, not a code library, so 'maturity' means quality of recommendations and freshness of data, both of which appear strong.
Low technical risk—this is a structured metadata project (mostly tools/generate_readme.go and projects.json), not a runtime library with dependency chains. Primary risk is stale recommendations: the curated list is only as fresh as its last review date (currently 2026-03-06), and Chinese-language documentation maintenance depends on community engagement. No build or deployment complexity, but relies on humans to periodically re-verify that linked projects are still maintained.
Active areas of work
Active curation and category refinement. Recent changes include: reorganization from 17 loose categories to 10 focused themes, removal of archived/abandoned projects, deduplication (each project appears once), and a new AI/Agent category reflecting LLM + MCP + vector DB trends. The 2026-03-06 maintenance review suggests regular audits of project health.
🚀Get running
Clone and review: git clone https://github.com/hackstoic/golang-open-source-projects.git && cd golang-open-source-projects && cat README.md. To regenerate the README from projects.json: cd tools && go run generate_readme.go. (No install/build step needed for reading; Go 1.18+ required if regenerating.)
Daily commands:
This is not a runnable service. To update the README after editing projects.json: cd tools && go run generate_readme.go > ../README.md. To verify links or metadata: manually review projects.json and docs/.
🗺️Map of the codebase
projects.json— Core data file containing all 75 Go open-source projects with metadata; any contributor modifying project listings must update this JSON first.README.md— Primary entry point and project overview; defines the 10 categorization themes, maintenance policy, and inclusion criteria that govern all contributions.docs/分类与维护策略.md— Classification and maintenance policy document; essential reference for understanding how projects are organized and vetted.tools/generate_readme.go— Build tool that programmatically generates README.md from projects.json; any changes to project data structure or output format require updating this generator.docs/移除与迁移记录.md— Historical record of removed and migrated projects; documents deprecation decisions and helps avoid duplicate reinclusions.
🧩Components & responsibilities
- projects.json (JSON) — Authoritative data store for project metadata (name, URL, description, category, maintenance status)
- Failure mode: Malformed JSON or missing required fields breaks the generator; corrupted data propagates to README
- generate_readme.go (Go standard library (encoding/json, io/ioutil, text/template or similar)) — Orchestrates transformation of projects.json into a well-formatted README.md with category tables and statistics
- Failure mode: Generator bugs produce incomplete, incorrectly sorted, or missing category sections in README
- docs/ policy documents (Markdown) — Define and document classification rules, inclusion criteria, and historical removal decisions
- Failure mode: Unclear or conflicting policy leads to inconsistent project categorization and contributor confusion
- README.md (Markdown (GitHub-rendered)) — Published project directory consumed by users; serves as the primary interface for discovering and evaluating Go projects
- Failure mode: Outdated or malformed README discourages users or presents inaccurate project information
🔀Data flow
Contributor→projects.json— Add, update, or remove project entries with metadataprojects.json→generate_readme.go— Generator reads projects and their category assignmentsdocs/ policies→Contributor decision logic— Policy documents guide inclusion/exclusion decisions before modifying projects.jsongenerate_readme.go→README.md— Generator outputs formatted project listings, category tables, and statisticsREADME.md→End user (GitHub browser)— Users read the curated directory and select projects based on categories and descriptions
🛠️How to make changes
Add a new Go project to the directory
- Open projects.json and add a new object to the appropriate category array with fields: name, github_url, description, language, stars, updated_date, and maintained_status (
projects.json) - Verify the project meets inclusion criteria by consulting docs/分类与维护策略.md (active maintenance, clear community perception, learning/selection value) (
docs/分类与维护策略.md) - Run tools/generate_readme.go to regenerate README.md with the new project included in its category table (
tools/generate_readme.go) - Commit the updated projects.json and auto-generated README.md (
README.md)
Remove or migrate a project
- Remove the project entry from its category array in projects.json (
projects.json) - Document the removal decision, reason, and any replacement project in docs/移除与迁移记录.md (
docs/移除与迁移记录.md) - Regenerate README.md by running tools/generate_readme.go (
tools/generate_readme.go)
Update project metadata or maintenance status
- Locate the project entry in projects.json and update fields such as maintained_status, updated_date, or description (
projects.json) - Regenerate README.md to reflect the updated metadata (
tools/generate_readme.go)
Create a new project category
- Update docs/分类与维护策略.md to define the new category's purpose and scope (
docs/分类与维护策略.md) - Add a new category entry in projects.json with an empty or seeded projects array (
projects.json) - Update tools/generate_readme.go to include the new category in the generation logic (
tools/generate_readme.go) - Regenerate README.md to display the new category (
README.md)
🔧Why these technologies
- JSON data format (projects.json) — Structured, human-readable, and language-agnostic; simple for parsing by the Go generator tool and version control
- Go code generator (generate_readme.go) — Single-file, zero-dependency tool matches the Go ecosystem ethos; ensures README is always in sync with projects.json
- Markdown documentation — GitHub-native format; renders directly on repo homepage and is easily forkable for translations
- Git for version control — Enables audit trail of maintenance decisions, project additions/removals, and policy changes
⚖️Trade-offs already made
-
Generate README.md from projects.json rather than maintaining it manually
- Why: Prevents divergence between data and documentation; ensures every project listing is canonical and consistent
- Consequence: README must always be regenerated after any projects.json change; contributors cannot directly edit category tables in README
-
Limit to 75 actively maintained projects rather than pursuing exhaustive coverage
- Why: Focuses curation on learning and selection value; reduces maintenance burden of deprecated projects
- Consequence: Some valid projects will be excluded; requires explicit deprecation tracking to avoid community confusion
-
Single entry per project (no duplication across categories)
- Why: Eliminates redundancy and ensures clear project identity
- Consequence: Boundary decisions between categories become critical; misclassification is more visible
-
Keep policy and removal records in separate markdown documents
- Why: Provides clear governance reference and historical accountability
- Consequence: Contributors must consult multiple docs; adds overhead for understanding inclusion/exclusion rules
🚫Non-goals (don't propose these)
- Does not provide automated GitHub API polling for maintenance status; updates are manual and periodic (as of 2026-03-06)
📊Code metrics
- Avg cyclomatic complexity: ~2 — Codebase is intentionally simple: JSON data file, single Go generator script, and markdown documentation. No complex algorithms, minimal dependencies, straightforward data transformation pipeline.
- Largest file:
README.md(350 lines) - Estimated quality issues: ~1 — Primary risk is lack of automation for maintenance status validation and no documented contributor guidelines for running the generator tool.
⚠️Anti-patterns to avoid
- Manual README maintenance risk (High) —
README.md (if edited directly instead of regenerated): Contributors might manually edit the generated README tables instead of updating projects.json and regenerating; causes divergence between data source and documentation - Unclear categorization boundaries (Medium) —
docs/分类与维护策略.md, projects.json: Some projects may fit multiple categories (e.g., Kubernetes in cloud-native vs. developer tools); without strict rules, placement becomes inconsistent - No automated maintenance status validation (Medium) —
projects.json, tools/generate_readme.go: Maintenance status is manually tracked; no automated checks verify that projects are still active on GitHub or remove stale entries
🔥Performance hotspots
tools/generate_readme.go(Build pipeline single point of failure) — Single Go script is the only way to regenerate README; if this tool breaks, the directory cannot be updated until fixedContributor workflow(Process bottleneck) — Updating projects.json requires knowledge of the generator and regeneration step; undocumented steps slow onboardingprojects.json(Data scaling) — As the file grows beyond 75+ projects, parsing and generation latency will increase; no pagination or sharding strategy
🪤Traps & gotchas
- projects.json schema is not documented in README—you must infer structure by reading tools/generate_readme.go or examining projects.json directly. 2. The 'last maintenance review' date (2026-03-06) is a static snapshot; projects may have fallen out of maintenance since then—links should be spot-checked before recommending to others. 3. If projects.json is in JSON (not YAML), the go:generate or rebuild script must use the correct unmarshaling. 4. Category boundaries are opinionated (e.g., why is Ollama in AI/Agent but not cloud-native?); decisions are in docs/ but not always obvious from README alone.
🏗️Architecture
💡Concepts to learn
- Curation vs. Exhaustiveness — This repo's core philosophy is quality-over-quantity, explicitly rejecting the '尽可能全' (as complete as possible) approach of older awesome lists; understanding this trade-off is key to knowing when to trust the recommendations and when to look deeper.
- Project Lifecycle and Maintenance Status — The repo filters by 'active maintenance as of 2026-03-06' and maintains a removal/migration audit trail; this emphasizes that open-source health is temporal and projects can become stale, a lesson for selecting production dependencies.
- Service Mesh Pattern (Istio example) — Istio is listed in the service-governance category; understanding service mesh (traffic management, security, observability across microservices) is key context for why Istio appears in this curated list.
- Container Orchestration (Kubernetes vs. Nomad vs. Swarm) — The cloud-native category lists Kubernetes, Nomad, and SwarmKit side-by-side, implying different orchestration philosophies; understanding the trade-offs (declarative control-plane vs. lightweight scheduling) helps know when each applies.
- LLM Application Frameworks (LangChain, Eino) and Agent Patterns — The new AI/Agent category emphasizes frameworks for building agentic workflows with LLMs, tool calling, and RAG; this represents a major shift in what Go developers are building as of 2026.
- Vector Databases and RAG (Retrieval-Augmented Generation) — Weaviate is listed as a Go-based vector DB for RAG; understanding how vector similarity search enables LLM context retrieval is essential context for the new AI/Agent section.
- Zero-Trust Security Model (Teleport example) — Teleport appears in network & security as a 'zero-trust' remote access tool; knowing this security paradigm shift (trust no one by default, verify everything) contextualizes why it's gaining traction in infrastructure.
🔗Related repos
avelino/awesome-go— The original English-language awesome-go list; this repo is a curated Chinese-focused fork with stricter maintenance and category consolidation.golang/go— The Go language itself; projects in this curated list are all Go ecosystem projects, so understanding Go's package and module standards is foundational.cloudwego/awesome-cloudwego— ByteDance's curated list of CloudWeGo ecosystem projects; overlaps with this repo's cloud-native and service-mesh categories (e.g., Istio, Eino).moby/moby— Docker/container runtime implementation in Go; directly listed in this repo's cloud-native category and exemplifies the kind of production-scale Go project being indexed.kubernetes/kubernetes— The Kubernetes project itself; listed here and represents the largest and most-forked Go open-source project in the container/orchestration space.
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add automated project maintenance validation workflow
The repo has a documented maintenance cutoff date (2026-03-06) and removal policy in docs/移除与迁移记录.md, but lacks a GitHub Actions workflow to validate that projects.json entries have recent activity. This would prevent stale projects from being included and ensure the 'maintained status' claim stays accurate.
- [ ] Create .github/workflows/validate-maintenance.yml that checks GitHub API for last commit date on each project listed in projects.json
- [ ] Add a validation script in tools/ (e.g., validate_projects.go) that cross-references projects.json against GitHub to flag unmaintained repos
- [ ] Document the validation process in docs/分类与维护策略.md with instructions for running pre-merge checks
- [ ] Set up the workflow to run on pull requests that modify projects.json to catch stale entries early
Implement schema validation and lint rules for projects.json
projects.json is a critical data source for README generation, but there's no visible schema validation or linting. New contributors could add invalid entries without catching structural errors. A JSON schema + validation tool would ensure data quality and consistency.
- [ ] Create a JSON schema file (e.g., tools/projects-schema.json) defining required fields: name, description, category, github_url, stars (optional), etc.
- [ ] Add validation logic to tools/generate_readme.go or a new tools/validate_schema.go that validates projects.json against the schema
- [ ] Create a pre-commit hook or GitHub Action to run schema validation on any projects.json changes
- [ ] Document the expected format and required fields in docs/分类与维护策略.md so contributors know how to add projects correctly
Add cross-category duplicate detection tool
The README states 'Each project only appears once, avoiding duplication across categories' but this is enforced manually. A tool to detect when the same GitHub repo appears in multiple categories would catch accidental violations during PR review.
- [ ] Create tools/check_duplicates.go that parses projects.json and extracts unique GitHub URLs, flagging any repo appearing in multiple categories
- [ ] Add this check to a GitHub Action workflow (e.g., on pull_request events) to fail builds if duplicates are detected
- [ ] Output a clear report showing which repos are duplicated and which categories they appear in
- [ ] Document the duplication policy and how to resolve conflicts in docs/分类与维护策略.md
🌿Good first issues
- Review projects in one category (e.g., AI/Agent) against their GitHub repos to confirm they are still actively maintained as of today, and file an issue if any are found to be archived or stale—useful way to refresh the 2026-03-06 baseline.
- Add a 'Stars/Forks/Last Commit' metadata column to projects.json and tools/generate_readme.go to render GitHub vitality indicators in the README tables—gives readers immediate signal of project health.
- Translate the 10 category descriptions in README.md into English alongside Chinese, or create a parallel README-EN.md—lowers barrier for non-Chinese speakers and expands reach.
⭐Top contributors
Click to expand
Top contributors
- @coinstoic — 37 commits
- @hackstoic — 14 commits
- @panjf2000 — 11 commits
- @shuchaang — 1 commits
- @abelzhou — 1 commits
📝Recent commits
Click to expand
Recent commits
21ac5f0— update repo (hackstoic)9cbda57— Merge pull request #67 from shuchaang/fix-readme (hackstoic)92b00f2— Update README.md (shuchaang)01a8c52— 剔除一些链接失效的项目,更新部分项目链接和内容,展示每个项目的star数 (coinstoic)cd5ee84— Merge branch 'master' of https://github.com/hackstoic/golang-open-source-projects (coinstoic)958d0e7— 增加json版本的项目数据,用于从json生成markdown文件 (coinstoic)ec86d72— 修复拼写错误;移除失效链接;根据star数重新排名 (coinstoic)c270fcf— typo fix (hackstoic)3485ace— 20190625 ranking updated, by script (coinstoic)3abef31— Merge pull request #27 from Ryanbeta/patch-1 (hackstoic)
🔒Security observations
This repository is a curated index of Go open-source projects with minimal direct security risks. The codebase lacks external dependencies and secrets exposure. Primary concerns are related to data validation in the generate_readme.go tool and the need for source verification of referenced third-party projects. The project maintains good separation of concerns with clear documentation. No critical vulnerabilities detected, but implementing input validation and supply chain verification would strengthen security posture.
- Low · Missing Input Validation in README Generation Tool —
tools/generate_readme.go. The tools/generate_readme.go file appears to process project data from projects.json without visible validation. If projects.json contains untrusted data or is modified externally, it could lead to injection vulnerabilities in generated markdown output. Fix: Implement strict validation and sanitization for all data read from projects.json before processing. Validate project names, URLs, and descriptions against allowlist patterns. - Low · No Apparent Supply Chain Verification —
projects.json, README.md. The repository collects and curates open-source Go projects without visible cryptographic verification of source authenticity or integrity checks for referenced projects. Fix: Consider implementing checksums or commit hash verification for recommended projects. Document the review process and maintenance criteria clearly. - Low · Outdated Maintenance Information —
README.md. The README states the last maintenance review was on 2026-03-06 (a future date), which suggests either a documentation error or incorrect timestamp tracking. This could mask actual maintenance status. Fix: Correct the maintenance date to actual current date. Implement automated timestamp generation to prevent manual date errors.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.