- Add 🧊 marker for 113 stale projects (2+ years inactive) - Remove 4 archived repos (Centurion, notary, Minio, docker-ls) - Remove 1 broken link (docker-lock / safe-waters) - Add Arcane to the Web section - Replace 💲 with 💴 across README and tooling - Add 🧊 (MarkerStale) support to Go parser/linter - Update CONTRIBUTING.md, PR template, issue template, and AGENTS.md Closes #1260, relates to #1188, #1255 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
Agent Guidelines for awesome-docker
Commands
- Build CLI:
make build(orgo build -o awesome-docker ./cmd/awesome-docker) - Rebuild from scratch:
make rebuild - Show local workflows:
make help - Format Go code:
make fmt - Run tests:
make test(runsgo test ./internal/... -v) - Race tests:
make test-race - Lint README rules:
make lint(runs./awesome-docker lint) - Auto-fix lint issues:
make lint-fix - Check links:
make check(runs./awesome-docker check;GITHUB_TOKENenables GitHub repo checks) - PR-safe link checks:
make check-pr - PR validation:
make validate(lint + external link checks in PR mode) - Build website:
make website(generateswebsite/index.htmlfromREADME.md) - Health scoring:
make health(requiresGITHUB_TOKEN, refreshesconfig/health_cache.yaml) - Print health report (Markdown):
make report - Print health report (JSON):
make report-jsonor./awesome-docker report --json - Generate report files:
make report-file(HEALTH_REPORT.md) andmake report-json-file(HEALTH_REPORT.json) - Maintenance shortcut:
make workflow-maint(health + JSON report file)
Architecture
- Main content:
README.md(curated Docker/container resources) - CLI entrypoint:
cmd/awesome-docker/main.go(Cobra commands) - Core packages:
internal/parser- parse README sections and entriesinternal/linter- alphabetical/order/format validation + autofixinternal/checker- HTTP and GitHub link checksinternal/scorer- repository health scoring and report generationinternal/cache- exclude list and health cache read/writeinternal/builder- render README to website HTML from template
- Config:
config/exclude.yaml- known link-check exclusionsconfig/website.tmpl.html- HTML template for site generationconfig/health_cache.yaml- persisted health scoring cache
- Generated outputs:
awesome-docker- compiled CLI binarywebsite/index.html- generated websiteHEALTH_REPORT.md- generated markdown reportHEALTH_REPORT.json- generated JSON report
Code Style
- Language: Go
- Formatting: Keep code
gofmt-clean - Testing: Add/adjust table-driven tests in
internal/*_test.gofor behavior changes - Error handling: Return wrapped errors (
fmt.Errorf("context: %w", err)) from command handlers - CLI conventions: Keep command behavior consistent with existing Cobra commands (
lint,check,health,build,report,validate)
CI/Automation
- PR + weekly validation:
.github/workflows/pull_request.yml- Triggers on pull requests to
masterand weekly schedule - Builds Go CLI and runs
./awesome-docker validate
- Triggers on pull requests to
- Weekly broken links issue:
.github/workflows/broken_links.yml- Runs
./awesome-docker check - Opens/updates
broken-linksissue when failures are found
- Runs
- Weekly health report issue:
.github/workflows/health_report.yml- Runs
./awesome-docker healththen./awesome-docker report - Opens/updates
health-reportissue
- Runs
- GitHub Pages deploy:
.github/workflows/deploy-pages.yml- On push to
master, builds CLI, runs./awesome-docker build, deployswebsite/
- On push to
Makefile Workflow
- The
Makefilemodels file dependencies for generated artifacts (awesome-docker,website/index.html,config/health_cache.yaml,HEALTH_REPORT.md,HEALTH_REPORT.json). - Prefer
maketargets over ad-hoc command sequences so dependency and regeneration behavior stays consistent. - Use:
make workflow-devfor local iterationmake workflow-prbefore opening/updating a PRmake workflow-maintfor health/report maintenancemake workflow-cifor CI-equivalent local checks
Content Guidelines (from CONTRIBUTING.md)
- Use one link per entry
- Prefer project/repository URLs over marketing pages
- Keep entries alphabetically ordered within each section
- Keep descriptions concise and concrete
- Use
:yen:only for paid/commercial services - Use
:ice_cube:for stale projects (2+ years inactive) - Remove archived/deprecated projects instead of tagging them
- Avoid duplicate links and redirect variants