Skip to content

docs: add public contribution guidance - #31

Merged
nehal-a2z merged 2 commits into
mainfrom
esthor/add-oss-governance
Aug 11, 2026
Merged

docs: add public contribution guidance#31
nehal-a2z merged 2 commits into
mainfrom
esthor/add-oss-governance

Conversation

@esthor

@esthor esthor commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add public contribution guidance for canonical skills and host-specific packaging
  • add structured bug-report and skill-change issue forms
  • disable blank public issues and route vulnerability reports to GitHub private advisories
  • add a pull-request template aligned with progressive disclosure and deterministic tooling

Why

This public repository distributes skills across several agent hosts. Contributors need a public, reviewable contract for source ownership, host alignment, validation, privacy, and focused changes.

Validation

  • git diff --check
  • parsed every issue-form YAML file successfully with Ruby YAML
  • verified the Agent Skills, AGENTS.md, and GitHub private-reporting references
  • verified GitHub private vulnerability reporting is enabled

Summary by CodeRabbit

  • Documentation

    • Added comprehensive contribution guidance, including issue reporting, security reporting, validation, packaging checks, and pull-request expectations.
    • Documented public contribution updates in the unreleased changelog.
  • New Features

    • Added structured templates for bug reports, skill-change proposals, and pull requests.
    • Added issue configuration with a private security-reporting option and disabled blank issues.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 57650ab2-2dd4-4c84-8d67-5fcd50e3d1ac

📥 Commits

Reviewing files that changed from the base of the PR and between 885f7ed and 70389bf.

📒 Files selected for processing (1)
  • CHANGELOG.md
📜 Recent review details
⚠️ CI failures not shown inline (2)

GitHub Actions: Required approver / 0_verify.txt: docs: add public contribution guidance

Conclusion: failure

View job details

##[group]Run set -euo pipefail
 �[36;1mset -euo pipefail�[0m
 �[36;1m�[0m
 �[36;1mowner="${REPOSITORY%%/*}"�[0m
 �[36;1mrepo="${REPOSITORY#*/}"�[0m
 �[36;1m�[0m
 �[36;1mresponse="$(�[0m
 �[36;1m  gh api graphql \�[0m
 �[36;1m    -f owner="$owner" \�[0m
 �[36;1m    -f repo="$repo" \�[0m
 �[36;1m    -F number="$PR_NUMBER" \�[0m
 �[36;1m    -f query='�[0m
 �[36;1m      query($owner: String!, $repo: String!, $number: Int!) {�[0m
 �[36;1m        repository(owner: $owner, name: $repo) {�[0m
 �[36;1m          pullRequest(number: $number) {�[0m
 �[36;1m            isDraft�[0m
 �[36;1m            reviews(last: 100) {�[0m
 �[36;1m              nodes {�[0m
 �[36;1m                author {�[0m
 �[36;1m                  login�[0m
 �[36;1m                }�[0m
 �[36;1m                commit {�[0m
 �[36;1m                  oid�[0m
 �[36;1m                }�[0m
 �[36;1m                state�[0m
 �[36;1m                submittedAt�[0m
 �[36;1m              }�[0m
 �[36;1m            }�[0m
 �[36;1m          }�[0m
 �[36;1m        }�[0m
 �[36;1m      }�[0m
 �[36;1m    '�[0m
 �[36;1m)"�[0m
 �[36;1m�[0m
 �[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
 �[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
 �[36;1m  echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1m�[0m
 �[36;1mapproved_by="$(�[0m
 �[36;1m  jq -r \�[0m
 �[36;1m    --arg head "$HEAD_SHA" \�[0m
 �[36;1m    --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
 �[36;1m    '�[0m
 �[36;1m      .data.repository.pullRequest.reviews.nodes�[0m
 �[36;1m      | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
 �[36;1m      | sort_by(.author.login)�[0m
 �[36;1m      | group_by(.author.login)�[0m
 �[36;1m      | map(max_by(.submittedAt))�[0m
 �[36;1m      | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
 �[36;1m      | first.author.login // empty�[0m
 �[36;1m    ...

GitHub Actions: Required approver / verify: docs: add public contribution guidance

Conclusion: failure

View job details

##[group]Run set -euo pipefail
 �[36;1mset -euo pipefail�[0m
 �[36;1m�[0m
 �[36;1mowner="${REPOSITORY%%/*}"�[0m
 �[36;1mrepo="${REPOSITORY#*/}"�[0m
 �[36;1m�[0m
 �[36;1mresponse="$(�[0m
 �[36;1m  gh api graphql \�[0m
 �[36;1m    -f owner="$owner" \�[0m
 �[36;1m    -f repo="$repo" \�[0m
 �[36;1m    -F number="$PR_NUMBER" \�[0m
 �[36;1m    -f query='�[0m
 �[36;1m      query($owner: String!, $repo: String!, $number: Int!) {�[0m
 �[36;1m        repository(owner: $owner, name: $repo) {�[0m
 �[36;1m          pullRequest(number: $number) {�[0m
 �[36;1m            isDraft�[0m
 �[36;1m            reviews(last: 100) {�[0m
 �[36;1m              nodes {�[0m
 �[36;1m                author {�[0m
 �[36;1m                  login�[0m
 �[36;1m                }�[0m
 �[36;1m                commit {�[0m
 �[36;1m                  oid�[0m
 �[36;1m                }�[0m
 �[36;1m                state�[0m
 �[36;1m                submittedAt�[0m
 �[36;1m              }�[0m
 �[36;1m            }�[0m
 �[36;1m          }�[0m
 �[36;1m        }�[0m
 �[36;1m      }�[0m
 �[36;1m    '�[0m
 �[36;1m)"�[0m
 �[36;1m�[0m
 �[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
 �[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
 �[36;1m  echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1m�[0m
 �[36;1mapproved_by="$(�[0m
 �[36;1m  jq -r \�[0m
 �[36;1m    --arg head "$HEAD_SHA" \�[0m
 �[36;1m    --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
 �[36;1m    '�[0m
 �[36;1m      .data.repository.pullRequest.reviews.nodes�[0m
 �[36;1m      | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
 �[36;1m      | sort_by(.author.login)�[0m
 �[36;1m      | group_by(.author.login)�[0m
 �[36;1m      | map(max_by(.submittedAt))�[0m
 �[36;1m      | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
 �[36;1m      | first.author.login // empty�[0m
 �[36;1m    ...
🧰 Additional context used
📓 Path-based instructions (1)
{README.md,CHANGELOG.md,DISTRIBUTION_CHANNELS.md}

⚙️ CodeRabbit configuration file

{README.md,CHANGELOG.md,DISTRIBUTION_CHANNELS.md}: Keep public installation commands, release status, and source-of-truth claims accurate and mutually consistent.

Files:

  • CHANGELOG.md
🔇 Additional comments (1)
CHANGELOG.md (1)

11-14: 📐 Maintainability & Code Quality

Retain this changelog entry. .coderabbit.yaml defines all listed controls, including assertive draft and incremental reviews, request changes, error-mode pre-merge checks, local knowledge scopes, and guidance for skills, native packaging, and public documentation.

			> Likely an incorrect or invalid review comment.

📝 Walkthrough

Walkthrough

Added structured GitHub forms for bug reports and skill-change proposals. Configured issue handling to disable blank issues and provide private security reporting. Added pull request prompts and a contribution guide covering repository standards, validation, packaging, security, and licensing. Updated the unreleased changelog.

Changes

Contribution guidance

Layer / File(s) Summary
Issue intake forms
.github/ISSUE_TEMPLATE/bug-report.yml, .github/ISSUE_TEMPLATE/skill-change.yml, .github/ISSUE_TEMPLATE/config.yml
Added structured forms for bug reports and skill-change proposals. Disabled blank issues and configured private security reporting.
Contribution process documentation
CONTRIBUTING.md, .github/pull_request_template.md, CHANGELOG.md
Added contribution, validation, packaging, security, licensing, and pull request guidance. Documented the changes in the unreleased changelog.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • coderabbitai/skills#30: Adds the security policy that complements this pull request’s private security-reporting link and guidance.

Suggested reviewers: juanpflores, nehal-a2z

Poem

A rabbit checks each form with care,
Clear paths guide reports everywhere.
Skills and pull requests find their way,
Contribution rules now mark the day.
Hop, hop—standards bloom!

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding public contribution guidance and related repository templates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Agent Guidance Structure ✅ Passed The PR changes only contribution documentation, issue forms, a PR template, and CHANGELOG.md; it does not modify skills, agent-facing guidance, native commands or agents, or manifests.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch esthor/add-oss-governance

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/ISSUE_TEMPLATE/config.yml:
- Around line 3-5: Enable private vulnerability reporting in the repository
settings before merging, changing the security advisories configuration from
disabled to enabled so the URL used by the “Report a security vulnerability”
issue template supports private reports.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: a23e3094-547a-4172-896f-1389c79f95c9

📥 Commits

Reviewing files that changed from the base of the PR and between 083cb4b and 885f7ed.

📒 Files selected for processing (6)
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/skill-change.yml
  • .github/pull_request_template.md
  • CHANGELOG.md
  • CONTRIBUTING.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • coderabbitai/bitbucket (manual)
📜 Review details
⚠️ CI failures not shown inline (2)

GitHub Actions: Required approver / verify: docs: add public contribution guidance

Conclusion: failure

View job details

##[group]Run set -euo pipefail
 �[36;1mset -euo pipefail�[0m
 �[36;1m�[0m
 �[36;1mowner="${REPOSITORY%%/*}"�[0m
 �[36;1mrepo="${REPOSITORY#*/}"�[0m
 �[36;1m�[0m
 �[36;1mresponse="$(�[0m
 �[36;1m  gh api graphql \�[0m
 �[36;1m    -f owner="$owner" \�[0m
 �[36;1m    -f repo="$repo" \�[0m
 �[36;1m    -F number="$PR_NUMBER" \�[0m
 �[36;1m    -f query='�[0m
 �[36;1m      query($owner: String!, $repo: String!, $number: Int!) {�[0m
 �[36;1m        repository(owner: $owner, name: $repo) {�[0m
 �[36;1m          pullRequest(number: $number) {�[0m
 �[36;1m            isDraft�[0m
 �[36;1m            reviews(last: 100) {�[0m
 �[36;1m              nodes {�[0m
 �[36;1m                author {�[0m
 �[36;1m                  login�[0m
 �[36;1m                }�[0m
 �[36;1m                commit {�[0m
 �[36;1m                  oid�[0m
 �[36;1m                }�[0m
 �[36;1m                state�[0m
 �[36;1m                submittedAt�[0m
 �[36;1m              }�[0m
 �[36;1m            }�[0m
 �[36;1m          }�[0m
 �[36;1m        }�[0m
 �[36;1m      }�[0m
 �[36;1m    '�[0m
 �[36;1m)"�[0m
 �[36;1m�[0m
 �[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
 �[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
 �[36;1m  echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1m�[0m
 �[36;1mapproved_by="$(�[0m
 �[36;1m  jq -r \�[0m
 �[36;1m    --arg head "$HEAD_SHA" \�[0m
 �[36;1m    --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
 �[36;1m    '�[0m
 �[36;1m      .data.repository.pullRequest.reviews.nodes�[0m
 �[36;1m      | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
 �[36;1m      | sort_by(.author.login)�[0m
 �[36;1m      | group_by(.author.login)�[0m
 �[36;1m      | map(max_by(.submittedAt))�[0m
 �[36;1m      | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
 �[36;1m      | first.author.login // empty�[0m
 �[36;1m    ...

GitHub Actions: Required approver / 0_verify.txt: docs: add public contribution guidance

Conclusion: failure

View job details

##[group]Run set -euo pipefail
 �[36;1mset -euo pipefail�[0m
 �[36;1m�[0m
 �[36;1mowner="${REPOSITORY%%/*}"�[0m
 �[36;1mrepo="${REPOSITORY#*/}"�[0m
 �[36;1m�[0m
 �[36;1mresponse="$(�[0m
 �[36;1m  gh api graphql \�[0m
 �[36;1m    -f owner="$owner" \�[0m
 �[36;1m    -f repo="$repo" \�[0m
 �[36;1m    -F number="$PR_NUMBER" \�[0m
 �[36;1m    -f query='�[0m
 �[36;1m      query($owner: String!, $repo: String!, $number: Int!) {�[0m
 �[36;1m        repository(owner: $owner, name: $repo) {�[0m
 �[36;1m          pullRequest(number: $number) {�[0m
 �[36;1m            isDraft�[0m
 �[36;1m            reviews(last: 100) {�[0m
 �[36;1m              nodes {�[0m
 �[36;1m                author {�[0m
 �[36;1m                  login�[0m
 �[36;1m                }�[0m
 �[36;1m                commit {�[0m
 �[36;1m                  oid�[0m
 �[36;1m                }�[0m
 �[36;1m                state�[0m
 �[36;1m                submittedAt�[0m
 �[36;1m              }�[0m
 �[36;1m            }�[0m
 �[36;1m          }�[0m
 �[36;1m        }�[0m
 �[36;1m      }�[0m
 �[36;1m    '�[0m
 �[36;1m)"�[0m
 �[36;1m�[0m
 �[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
 �[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
 �[36;1m  echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1m�[0m
 �[36;1mapproved_by="$(�[0m
 �[36;1m  jq -r \�[0m
 �[36;1m    --arg head "$HEAD_SHA" \�[0m
 �[36;1m    --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
 �[36;1m    '�[0m
 �[36;1m      .data.repository.pullRequest.reviews.nodes�[0m
 �[36;1m      | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
 �[36;1m      | sort_by(.author.login)�[0m
 �[36;1m      | group_by(.author.login)�[0m
 �[36;1m      | map(max_by(.submittedAt))�[0m
 �[36;1m      | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
 �[36;1m      | first.author.login // empty�[0m
 �[36;1m    ...
🔇 Additional comments (5)
.github/ISSUE_TEMPLATE/bug-report.yml (1)

1-71: LGTM!

.github/ISSUE_TEMPLATE/skill-change.yml (1)

1-61: LGTM!

CONTRIBUTING.md (1)

1-77: LGTM!

.github/pull_request_template.md (1)

1-25: LGTM!

CHANGELOG.md (1)

9-10: LGTM!

Comment thread .github/ISSUE_TEMPLATE/config.yml
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 10, 2026
@nehal-a2z
nehal-a2z merged commit aa49953 into main Aug 11, 2026
3 of 6 checks passed
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.

2 participants