From 644e7c860c1e52bb8254b5de71caa3cef09ea3ca Mon Sep 17 00:00:00 2001 From: Alexandra Bara Date: Tue, 31 Mar 2026 08:47:39 -0500 Subject: [PATCH 1/2] README update + templates added --- .github/ISSUE_TEMPLATE/bug_report.yml | 72 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 +++ .github/ISSUE_TEMPLATE/feature_request.yml | 38 ++++++++++++ .github/pull_request_template.md | 12 ++++ README.md | 14 +++++ 5 files changed, 144 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/pull_request_template.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..2ee95c0c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,72 @@ +name: Bug report +description: Report a reproducible problem with Node Scraper +title: "[Bug]: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug. Please include enough detail to reproduce the issue. + - type: textarea + id: summary + attributes: + label: Summary + description: What happened and what did you expect to happen? + placeholder: Clear and concise description of the bug. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: Minimal, concrete steps to reproduce the issue. + placeholder: | + 1. ... + 2. ... + 3. ... + validations: + required: true + - type: textarea + id: logs + attributes: + label: CLI output / logs + description: Paste relevant output (redact secrets/tokens/hosts as needed). + render: shell + validations: + required: false + - type: input + id: version + attributes: + label: Version + description: Output of `node-scraper --version` (or the git commit hash). + placeholder: "e.g. 0.6.1" + validations: + required: false + - type: dropdown + id: install_method + attributes: + label: Install method + options: + - PyPI (pip install amd-node-scraper) + - Editable install from source (pip install -e .) + - Other + validations: + required: false + - type: input + id: python + attributes: + label: Python version + placeholder: "e.g. 3.11.8" + validations: + required: false + - type: textarea + id: environment + attributes: + label: Environment + description: OS, target system type (LOCAL/REMOTE), and anything else relevant. + placeholder: | + OS: + Target: + Notes: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..d12ff24a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Questions / discussions + url: https://github.com/amd/node-scraper/discussions + about: Please ask and answer questions here. + - name: Security reports + url: https://github.com/amd/node-scraper/security/policy + about: Please report security issues privately. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..b9249856 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,38 @@ +name: Feature request +description: Suggest an enhancement or new capability +title: "[Feature]: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thanks for the suggestion. Please describe the problem you're trying to solve and what success looks like. + - type: textarea + id: problem + attributes: + label: Problem / motivation + description: What problem are you trying to solve? + placeholder: "I want to..." + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What would you like Node Scraper to do? + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: What else have you tried or considered? + validations: + required: false + - type: textarea + id: scope + attributes: + label: Scope / impact + description: What plugins/OSes/environments would this affect? + validations: + required: false diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..269ee465 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,12 @@ +## Summary +- + +## Test plan +- [ ] `pytest test/unit` +- [ ] `pytest test/functional` (if applicable) +- [ ] `pre-commit run --all-files` + +## Checklist +- [ ] Added/updated tests (or explained why not) +- [ ] Updated docs/README if behavior changed +- [ ] No secrets or credentials committed diff --git a/README.md b/README.md index e575195d..2e73ce32 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ system debug. ## Table of Contents - [Installation](#installation) + - [Install from PyPI](#install-from-pypi) - [Install From Source](#install-from-source) - [CLI Usage](#cli-usage) - [Execution Methods](#execution-methods) @@ -24,6 +25,19 @@ system debug. invoked by collectors** -> See [docs/PLUGIN_DOC.md](docs/PLUGIN_DOC.md) ## Installation +### Install from PyPI +Node Scraper is published on [PyPI](https://pypi.org/project/amd-node-scraper/) as **amd-node-scraper**. Install it with Python 3.9 or newer: + +```sh +pip install amd-node-scraper +``` + +Use a virtual environment if you prefer. After installation, confirm the CLI is available: + +```sh +node-scraper --help +``` + ### Install From Source Node Scraper requires Python 3.9+ for installation. After cloning this repository, call dev-setup.sh script with 'source'. This script creates an editable install of Node Scraper in From 09be8370ee1d6a3e3fdb0ccbf8b2cf20e758be30 Mon Sep 17 00:00:00 2001 From: Alexandra Bara Date: Tue, 31 Mar 2026 09:01:15 -0500 Subject: [PATCH 2/2] SECURITY.md --- .github/ISSUE_TEMPLATE/config.yml | 8 ++++---- SECURITY.md | 34 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 SECURITY.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index d12ff24a..7a048e76 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - - name: Questions / discussions - url: https://github.com/amd/node-scraper/discussions - about: Please ask and answer questions here. + - name: Questions + url: https://github.com/amd/node-scraper/issues + about: If you're not sure it's a bug/feature request yet, start with an issue and add details. - name: Security reports url: https://github.com/amd/node-scraper/security/policy - about: Please report security issues privately. + about: Please report security issues privately (see SECURITY.md). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..89d7b1ba --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,34 @@ +# Security Policy + +## Supported Versions + +We provide security updates for the **latest released version** and for the **default branch**. + +| Version | Supported | +| ------- | ------------------ | +| Default branch (`main` / `development`) | :white_check_mark: | +| Latest PyPI release (`amd-node-scraper`) | :white_check_mark: | +| Older releases | :x: | + +## Reporting a Vulnerability + +Please **do not** open a public issue for security vulnerabilities. + +### Preferred: private vulnerability report (GitHub) + +If enabled for this repository, use GitHub’s private vulnerability reporting: + +- `https://github.com/amd/node-scraper/security/advisories/new` + +### What to include + +- A clear description of the issue and potential impact +- Steps to reproduce (or a proof-of-concept, if safe to share) +- The output of `node-scraper --version` (or a git commit hash) +- Any relevant configuration details (please redact secrets/credentials/hostnames/IPs) + +### What to expect + +- We will acknowledge receipt as soon as practical. +- If the report is accepted, we’ll work on a fix and coordinate disclosure timing. +- If the report is declined (e.g., not a security issue), we’ll explain why.