Skip to content

chore: refresh content and add lint + link-check workflows#9

Merged
DevelopmentCats merged 14 commits into
mainfrom
chore/refresh-and-automation
Jun 12, 2026
Merged

chore: refresh content and add lint + link-check workflows#9
DevelopmentCats merged 14 commits into
mainfrom
chore/refresh-and-automation

Conversation

@DevelopmentCats

@DevelopmentCats DevelopmentCats commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Refresh coder/awesome-coder so it reflects Coder's current positioning (self-hosted CDEs and AI coding agents) and add the lint and link-check guardrails the repo was missing. No new sections — this PR is purely hygiene and automation. A follow-up PR will add the modern Coder ecosystem (Registry, code-server, envbuilder, Desktop, AgentAPI, Terraform providers, etc.).

What changed

README and CONTRIBUTING

  • New tagline that matches how Coder describes itself today.
  • Drop the 2022 HashiCorp pull-quote.
  • Refresh every Official Resources link: coder.com/docs, coder.com/blog, canonical Discord invite, x.com/CoderHQ. Strip leftover utm_* parameters.
  • Remove empty / commented-out sections inherited from the original fork: Books, Beginner Guides, What is Coder?, the per-cloud sub-headings, Comparison, Miscellaneous, Companies using Coder, and the standalone ## License heading (forbidden by awesome-lint).
  • Templates section now leads with registry.coder.com/templates. The duplicate link to coder/coder/examples/templates/community-templates.md is removed; the curated third-party list is preserved.
  • Every bullet now follows [Name](url) - Description. so the file matches the convention CONTRIBUTING.md asks contributors to use, and awesome-lint accepts it.
  • Drop tmsmr/coder-hcloud: formally archived, last commit December 2022, hard-coded the now-retired Hetzner cx11 SKU. Flagged by linkspector --check-archived.
  • Rewrite CONTRIBUTING.md — removes the leftover "Pulumi community" line that was inherited from awesome-pulumi when this repo was forked.

CI and tooling, modeled on coder/registry and coder/coder

  • One ci.yaml with three fast jobs: format (Prettier via Bun), lint-awesome, lint-typos. Mirrors the structure of coder/registry.
  • Dedicated link-check.yaml using umbrelladocs/action-linkspector with cached Chrome, mirroring coder/coder/.github/workflows/weekly-docs.yaml. Runs on PR, on main pushes, on a weekly schedule, and via workflow_dispatch. A standalone linkspector step before the action prints every discovered URL and a stats table so the log is actually readable. --check-archived flags archived repos in the curated list.
  • zizmor.yaml audits the workflow files on every PR that touches .github/workflows/**.
  • All GitHub Actions are pinned to commit SHAs. dependabot.yaml updates them weekly along with the npm devDependencies.
  • .github/typos.toml declares the Coder community usernames and domain terms that crate-ci/typos would otherwise flag.
  • .github/PULL_REQUEST_TEMPLATE.md and ISSUE_TEMPLATE/{1-broken-link.yaml,2-suggest-resource.yaml,config.yml} follow coder/coder's style.

Out of scope (follow-up PR)

  • New sections for the modern Coder ecosystem: Platform and Tools (coder/coder, Registry, envbuilder, envbox, preview), IDE Integrations (code-server, vscode-coder, jetbrains-coder, JetBrains Toolbox), Coder Desktop (macOS, Windows), AI Coding Agents (AgentAPI, Tasks docs), Terraform Providers, Modules.
  • Auditing the rest of the curated template list. Only the formally archived Hetzner entry was removed here; the rest stays as-is until the content audit.

How I verified

Each change was checked locally before pushing:

bun fmt:ci
bun x awesome-lint
typos --config .github/typos.toml
npx -y @umbrelladocs/linkspector check --showstat --check-archived -c .github/.linkspector.yml

GitHub Actions confirms the same three workflows (CI, Link check, zizmor) pass green on the PR.


This change was prepared by Coder Agents.

Refresh README and CONTRIBUTING to match current Coder positioning
(self-hosted CDEs and AI coding agents) and remove dead anchors,
stale URLs, and commented-out placeholders that have sat unused since
the original fork from awesome-pulumi.

README:
- Update Awesome badge to the canonical https://awesome.re source.
- Restructure the header so the right-aligned logo no longer breaks
  the blockquote, and add alt text to the image.
- Refresh the tagline to describe Coder as it positions itself today.
- Drop the 2022 HashiCorp pull-quote.
- Update Documentation, Blog, Discord, X (formerly Twitter), and other
  Official Resources links. Strip stale utm_* parameters from internal
  links.
- Remove empty / commented-out sections: Books, Beginner Guides, What
  is Coder?, per-cloud headings, Comparison, Miscellaneous, Companies
  using Coder, and the standalone License heading.
- Templates section now points at registry.coder.com as the canonical
  source instead of the in-tree examples directory and the duplicate
  community-templates.md.
- Normalize bullet style and add one-line descriptions where needed so
  the file conforms to awesome-lint.
- Fix minor copy: NodeJS -> Node.js, Kubevirt -> KubeVirt, vscode ->
  VS Code, Setup -> Set up, missing trailing periods.

CONTRIBUTING:
- Rewrite for Coder. Removes the leftover "Pulumi community" line
  inherited from awesome-pulumi.

Automation:
- Add markdownlint, awesome-lint, and lychee link-check workflows so
  the README stays current.
- Add .markdownlint.jsonc mirroring coder/coder defaults.
- Add issue templates for broken links and resource suggestions.

This change was prepared by Coder Agents.
Copilot AI review requested due to automatic review settings June 12, 2026 17:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes the repository’s documentation to align with Coder’s current positioning and adds CI guardrails (markdown linting, awesome-lint, and link checking) to keep the awesome list consistent and prevent link drift over time.

Changes:

  • Updated README.md and CONTRIBUTING.md for current messaging, cleaned up stale sections/links, and normalized list formatting.
  • Added GitHub Actions workflows for markdownlint-cli2, awesome-lint, and scheduled/PR link checking via lychee.
  • Introduced shared lint/link-check configuration files plus issue templates for reporting broken links and suggesting resources.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
README.md Refreshes content/links and normalizes list entries for awesome-list conventions.
CONTRIBUTING.md Rewrites contribution guidance to be Coder-specific and sets formatting expectations.
.markdownlint.jsonc Adds markdownlint rule configuration for repo-wide markdown consistency.
.markdownlint-cli2.jsonc Configures markdownlint-cli2 ignores.
.lycheeignore Adds link-check ignore entries for bot-blocking hosts.
.github/workflows/markdownlint.yml Runs markdownlint-cli2 on pushes/PRs.
.github/workflows/awesome-lint.yml Runs awesome-lint on pushes/PRs.
.github/workflows/link-check.yml Runs lychee on pushes/PRs and on a weekly schedule, opening issues on scheduled failures.
.github/ISSUE_TEMPLATE/suggest-resource.yml Adds a structured issue form for suggesting new resources.
.github/ISSUE_TEMPLATE/broken-link.yml Adds a structured issue form for reporting broken README links.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
Comment thread .github/workflows/link-check.yml Outdated
Comment thread .markdownlint.jsonc Outdated
Restructure CI to align with coder/coder and coder/registry patterns:
- Single ci.yaml workflow with format, lint-awesome, lint-typos, and
  link-check jobs, replacing three separate workflow files.
- Add concurrency group so PR pushes cancel in-flight runs.
- Drop markdownlint in favor of Prettier (via Bun) for formatting, the
  way coder/registry handles it. awesome-lint already covers the
  markdown rules that mattered for an awesome list.
- Add crate-ci/typos for spell-checking, with .github/typos.toml
  declaring Coder community usernames and domain terms.
- Add a separate zizmor workflow to lint GitHub Actions for security
  issues, matching coder/registry.
- Pin all GitHub Actions to commit SHAs.

Repository hygiene:
- Add .github/PULL_REQUEST_TEMPLATE.md for contribution structure.
- Rewrite issue templates as 1-broken-link.yaml and
  2-suggest-resource.yaml to match coder/coder naming, with an
  ISSUE_TEMPLATE/config.yml directing general questions to docs,
  registry, Discord, and discussions.
- Add .github/dependabot.yaml for weekly Actions and npm updates.
- Add package.json, bun.lock, and .prettierignore so contributors and
  CI use the same Bun + Prettier toolchain as coder/registry.
- Add .gitignore for node_modules.

This change was prepared by Coder Agents.
Mail links are excluded by default now; passing the flag fails the
action with 'unexpected argument'.

This change was prepared by Coder Agents.
denbeigh2000/coder-templates was restructured into a single module;
the aws-nixos, aws-spot-nixos, and aws-spot-nixos-graviton sub-paths
are 404. Consolidate to a single entry pointing at the repo root.

ElliotG/coder-oss-gke-tf was renamed to ElliotG/coder-oss-tf and
redirects. The Tutorials bullet and the Automation bullet pointed at
the same repo through the redirect, which awesome-lint flagged as a
duplicate link once both URLs were canonicalized. Drop the Tutorials
copy and keep the Automation entry, which is the natural home for
'provision Coder with Terraform'.

PR and issue templates referenced ../blob/main/CONTRIBUTING.md, which
is not a valid filesystem path and broke local file resolution in
lychee. Switch to the absolute GitHub URL so the link works both as a
clickable link and as a target lychee can verify.

Verified locally with curl against every URL in the repo plus
prettier, awesome-lint, and typos.

This change was prepared by Coder Agents.
This change was prepared by Coder Agents.
lychee in ci.yaml already runs with --accept 200,206,403,429, which
treats the bot-blocked responses from Medium, the Palantir blog, and
Forrester as a valid status. The ignore file was belt-and-suspenders
config that gave the false impression those URLs weren't being
checked. The URLs are still structurally verified, we just accept
their 403 response.

This change was prepared by Coder Agents.
The coder/coder repository uses umbrelladocs/action-linkspector for
docs link checking because it drives a real Chromium via Puppeteer
and can resolve URLs that bot-blocking sites return non-200 statuses
for. Mirror that approach here so the link-check behavior is
consistent across coder/coder docs and coder/awesome-coder.

Changes:
- .github/.linkspector.yml mirrors coder/coder's config: dirs, an
  ignorePatterns list seeded with localhost / example.com / mailto
  and any host that blocks GitHub runner IPs, and
  aliveStatusCodes: [200].
- .github/workflows/link-check.yaml mirrors the two-job structure of
  coder/coder weekly-docs.yaml: a prepare job pins and caches Chrome
  via @puppeteer/browsers, then a check job runs action-linkspector
  with PUPPETEER_EXECUTABLE_PATH pointing at the cached binary.
- step-security/harden-runner guards both jobs.
- pnpm corepack workaround copied from coder/coder for the
  action-linkspector pnpm install bug (UmbrellaDocs/action-linkspector
  issue 54).
- Reporter switches to github-pr-review on PR so failures show up as
  inline review comments, github-check otherwise.

Drop the lychee check-links job from ci.yaml. The CI workflow keeps
the lightweight, fast jobs (format, lint-awesome, lint-typos) and
link checking moves to its own workflow file, matching how
coder/coder separates docs link checking from its main CI.

Validated locally by running linkspector with PUPPETEER_EXECUTABLE_PATH
pointed at the installed Chrome: 'All hyperlinks in the specified
files are valid.'

This change was prepared by Coder Agents.
The previous SHA was actually actions/setup-go@v6, mis-pasted from
coder/coder. setup-node@v6 resolves to 48b55a01.

Caught by both the workflow itself failing to resolve the action and
by zizmor's impostor_commit audit.

This change was prepared by Coder Agents.
action-linkspector pipes linkspector through reviewdog and stays
silent on success, so the log jumped from 'Running linkspector with
reviewdog' straight to step exit with no visibility into what was
checked.

Add two steps before action-linkspector:
- 'List URLs found in Markdown files' greps and sorts every URL the
  workflow is about to verify, so the log explicitly shows what is
  in scope.
- 'Run linkspector (verbose log)' runs the linkspector CLI standalone
  with --showstat and --check-archived. --showstat prints the count
  summary (total links checked, working, failed, archived). --check-
  archived warns when a listed GitHub repository is archived, which
  is useful signal for a curated list.

action-linkspector still runs (with if: always()) so the PR review
comment integration that mirrors coder/coder/.github/workflows/
weekly-docs.yaml is preserved.

This change was prepared by Coder Agents.
The previous regex tried to exclude apostrophes from the character
class, which forced single-quote-inside-single-quote bash escaping
that ended up mangled inside the YAML literal block. Bash failed
with 'unexpected EOF while looking for matching ' on the runner.

Use a simpler regex that does not include apostrophes (URLs in
markdown almost never contain them, and our 35 URLs definitely
don't), which lets the whole pattern stay inside one set of single
quotes. Validated by extracting the run script from the YAML and
running bash -n plus bash on it locally.

This change was prepared by Coder Agents.
…zner entry

setup-node was pinned to 20 while @puppeteer/browsers, puppeteer-core,
ink, slice-ansi, and cli-truncate all require node >= 22. The job
worked but emitted six 'npm warn EBADENGINE' lines on every run.
Bump both jobs to node 22.

Rename 'Run linkspector (verbose log)' to 'Run linkspector'. The
parenthetical was a hint about why this step exists alongside the
action-linkspector one; the surrounding comment block already
explains it more clearly.

Drop tmsmr/coder-hcloud from the Automation section. Linkspector's
--check-archived flagged it; the repo has been formally archived
since 2022, its last commit was 2022-12-11, and it depends on Coder
OSS internals (docker-compose.yaml path, install flow, Hetzner cx11
SKU retired in 2024) that have moved. There is no active fork.

This change was prepared by Coder Agents.
The original two-job structure mirrored coder/coder weekly-docs.yaml,
which makes sense at the coder/coder docs scale (thousands of files,
heavy Chrome cache reuse). For awesome-coder it is overkill: there
are 2 markdown files, 39 URLs, and exactly one downstream consumer.
The prepare job paid full runner spin-up overhead with no reuse to
amortize it.

Collapse into a single check-links job. Behavior is identical: same
SHA-pinned actions, same Chrome build pin, same browser cache via
actions/cache (which handles both restore and save in one step, so
the cache/restore split that the two-job structure required goes
away too). Chrome path now flows through a step output instead of a
job output.

Link-check stays in its own workflow file. The Chrome download and
browser-based crawl are heavy compared to the format/lint/typos jobs
in ci.yaml, and the schedule trigger plus paths filter belong with
this workflow rather than complicating ci.yaml triggers.

This change was prepared by Coder Agents.
The bullets in Official Resources were the only ones in the README
not following the '[Name](url) - Description.' format that
CONTRIBUTING.md asks contributors to use. Add one-line descriptions
so the section matches the convention used in Tutorials, IDEs,
Automation, Templates, and Talks.

Addresses the Copilot review comment on PR #9.

This change was prepared by Coder Agents.

@bpmct bpmct left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is definitely an objective improvement and it seems like you linted some stuff and added a few links but I still don't think this PR makes the repo something I'd view as a vetted community resource.

I'd recommend spending some time thinking intentionally about what types of resources our community would want and pulling together some links from internal folks here, or cross-referencing other awesome lists. We don't have to do it all in this PR but I still think we have some more work before this is a good, revived, up-to-date awesome list.

Comment thread .github/ISSUE_TEMPLATE/1-broken-link.yaml Outdated
Comment thread README.md Outdated
<!-- ## Books -->
- [Documentation](https://coder.com/docs) - Official Coder documentation, including install, admin, and contributor guides.
- [Blog](https://coder.com/blog) - Posts from the Coder team covering product updates, deployments, and technical deep dives.
- [Press kit & Brand styleguide](https://github.com/coder/presskit) - Logos, brand assets, and brand guidelines.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This repo is super outdated. Let's point people to coder.com/brand

Suggested change
- [Press kit & Brand styleguide](https://github.com/coder/presskit) - Logos, brand assets, and brand guidelines.
- [Press kit & brand style guide](https://coder.com/brand) - Logos, brand assets, and brand guidelines.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in ec03394. Switched the URL to coder.com/brand and renamed the entry to 'Press kit & brand style guide' to match your suggestion.

Replied on behalf of the author via Coder Agents.

Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md
Comment thread README.md Outdated
Comment thread README.md Outdated

@bpmct bpmct left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

edit: I just re-read the PR description now I feel like an asshole haha. feel free to have your agent accept some of the basic suggestions I made and then we can do a follow-up PR with the new links :P

My bad. I should read more. Super dumb of me

Official Resources:
- Press kit link points at coder.com/brand instead of the dormant
  coder/presskit GitHub repo. Rename to 'Press kit & brand style
  guide' (sentence case).
- Drop coder/presentations: that repo is dormant.
- Drop fosstodon.org/web/@CoderHQ: the Mastodon account is no longer
  actively posted to.

Tutorials and Blog Posts:
- Drop the 'Coder 101' blog post. It pre-dates the v2 reorg.

IDEs:
- Add coder.com/docs/user-guides/workspace-access as the canonical
  entry point for connecting from VS Code, JetBrains, Cursor,
  code-server, or the CLI.

Automation:
- Replace ElliotG/coder-oss-tf with the official Validated
  Architectures docs. The former is from the Coder OSS era and no
  longer reflects how we recommend deploying.

Talks and Videos:
- Add 'Introduction to Coder Workspaces' as a current-product intro
  video.
- Add Ben Potter's 'Building the IDE Golden Path' talk.
- Attribute the existing 'Your Next Workstation Is In The Cloud'
  talk to its speaker, Ketan Gangatirkar.

Issue templates:
- Drop 1-broken-link.yaml. Linkspector already runs on every PR and
  on a weekly schedule, so reporters do not need a separate broken-
  link issue template.
- Rename 2-suggest-resource.yaml to 1-suggest-resource.yaml so the
  numeric prefix stays sequential after the removal.

This change was prepared by Coder Agents.
@DevelopmentCats DevelopmentCats merged commit 02346cc into main Jun 12, 2026
5 checks passed

@phorcys420 phorcys420 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Post-merge 👍🏼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants