From 7ac159ac780c7a08dd7e404cc2cdc8f7350f2d39 Mon Sep 17 00:00:00 2001 From: Deepak Jain Date: Wed, 27 May 2026 09:47:59 -0700 Subject: [PATCH] docs: surface README community paths Fixes #3827 Signed-off-by: Deepak Jain --- README.md | 19 +++++++++++++++- test/readme-community-links.test.ts | 35 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test/readme-community-links.test.ts diff --git a/README.md b/README.md index 223bdbd4bc..b424319aad 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,22 @@ It installs the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime, NemoClaw adds guided onboarding, a hardened blueprint, state management, OpenShell-managed channel messaging, routed inference, and layered protection on top of the [NVIDIA OpenShell](https://github.com/NVIDIA/OpenShell) runtime. For the full feature list, refer to [Overview](https://docs.nvidia.com/nemoclaw/latest/about/overview.html). For the system diagram, component model, and blueprint lifecycle, refer to [How It Works](https://docs.nvidia.com/nemoclaw/latest/about/how-it-works.html) and [Architecture](https://docs.nvidia.com/nemoclaw/latest/reference/architecture.html). +## Get Involved + +NemoClaw is early alpha software, and feedback from users and contributors helps shape the project. +Use the links below to pick the right channel: + +| Need | Where to go | +|------|-------------| +| Ask setup or usage questions | [GitHub Discussions](https://github.com/NVIDIA/NemoClaw/discussions) or [Discord](https://discord.gg/XFpfPv9Uvx) | +| Report a reproducible bug | [GitHub Issues](https://github.com/NVIDIA/NemoClaw/issues) | +| Propose a feature or larger design change | [GitHub Discussions](https://github.com/NVIDIA/NemoClaw/discussions) first, then open an issue when the scope is clear | +| Start contributing | [CONTRIBUTING.md](CONTRIBUTING.md), especially issues labeled [`good first issue`](https://github.com/NVIDIA/NemoClaw/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22) | +| Follow current priorities | [Open milestones](https://github.com/NVIDIA/NemoClaw/milestones) and labeled issues | +| Report a vulnerability | [SECURITY.md](SECURITY.md), not public issues | + +Please also review the [Code of Conduct](CODE_OF_CONDUCT.md) before participating. + ## Getting Started Follow these steps to install NemoClaw and run your first sandboxed OpenClaw agent. @@ -282,7 +298,8 @@ NemoClaw/ ## Community -Join the NemoClaw community to ask questions, share feedback, and report issues. +Join the NemoClaw community to ask questions and share feedback. +For bugs, feature proposals, contribution guidance, roadmap pointers, and security reporting, use the channel matrix in [Get Involved](#get-involved). - [Discord](https://discord.gg/XFpfPv9Uvx) - [GitHub Discussions](https://github.com/NVIDIA/NemoClaw/discussions) diff --git a/test/readme-community-links.test.ts b/test/readme-community-links.test.ts new file mode 100644 index 0000000000..c70f24c6ec --- /dev/null +++ b/test/readme-community-links.test.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, it } from "vitest"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const repoRoot = path.resolve(__dirname, ".."); +const readme = fs.readFileSync(path.join(repoRoot, "README.md"), "utf8"); + +describe("README community front door", () => { + it("surfaces contribution, community, roadmap, and security paths near the top", () => { + const getInvolvedIndex = readme.indexOf("## Get Involved"); + const gettingStartedIndex = readme.indexOf("## Getting Started"); + + expect(getInvolvedIndex).toBeGreaterThan(0); + expect(getInvolvedIndex).toBeLessThan(gettingStartedIndex); + + for (const required of [ + "[GitHub Discussions](https://github.com/NVIDIA/NemoClaw/discussions)", + "[Discord](https://discord.gg/XFpfPv9Uvx)", + "[GitHub Issues](https://github.com/NVIDIA/NemoClaw/issues)", + "[CONTRIBUTING.md](CONTRIBUTING.md)", + "[`good first issue`](https://github.com/NVIDIA/NemoClaw/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22)", + "[Open milestones](https://github.com/NVIDIA/NemoClaw/milestones)", + "[SECURITY.md](SECURITY.md), not public issues", + "[Code of Conduct](CODE_OF_CONDUCT.md)", + ]) { + expect(readme.slice(getInvolvedIndex, gettingStartedIndex)).toContain(required); + } + }); +});