Skip to content

feat(community): contributor onboarding automation#54

Open
RBKunnela wants to merge 6 commits into
mainfrom
ci/contributor-onboarding-reflex
Open

feat(community): contributor onboarding automation#54
RBKunnela wants to merge 6 commits into
mainfrom
ci/contributor-onboarding-reflex

Conversation

@RBKunnela

@RBKunnela RBKunnela commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary

Adds contributor-experience automation and templates so issues and PRs get a consistent, helpful first response and stay organized by area.

Included

  • Welcome workflow — posts a clear first reply to new issues/PRs, with extra guidance for first-time contributors. Uses the built-in GITHUB_TOKEN (no external credentials).
  • Auto-labeler — labels PRs by area (docs / js / python / integrations / ci / tests). actions/labeler SHA-pinned.
  • Issue forms + PR template — bug / feature / question forms; PR checklist; security-advisory link.
  • CONTRIBUTING — a 'what to expect after opening a PR' section, a local pre-check command, and a good-first-issue pointer.

Cost

Free — public repo, standard runners; event-driven.

Verification

All workflow + issue-form YAML validated; the welcome step is bash-syntax-checked and dry-rendered.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Updated contribution guidelines and added a PR template with checklist, testing guidance, and security reporting instructions.
  • Chores

    • Added structured issue forms for bug reports, feature requests, and questions, plus contact links for contribution/security.
    • Added automated contributor welcome workflow, PR labeling workflow, and labeler rules to auto-apply area labels.

…butor in silence

Phase 1 of the Contributor Operating System. The #1 reason first-timers
don't return is silence; this makes every new issue/PR get a warm, useful
response within ~a minute, and keeps the queue self-organizing.

Added:
- .github/workflows/contributor-welcome.yml — greets every new issue/PR,
  with an extra-warm branch for first-time contributors. Uses gh CLI +
  the built-in (never-expiring) GITHUB_TOKEN; no third-party action, no
  external credential — this path cannot hit the credential bottleneck.
  pull_request_target with no checkout so it safely comments on fork PRs.
- .github/workflows/labeler.yml + .github/labeler.yml — path-based
  auto-labeling (docs/js/python/integrations/ci/tests). actions/labeler
  SHA-pinned per supply-chain policy.
- .github/ISSUE_TEMPLATE/ — bug, feature, question forms + config
  (blank issues off; links to Moltbook + private security advisories).
- .github/pull_request_template.md — what/why + type + checklist.
- CONTRIBUTING.md — 'What happens after you open a PR' so expectations
  are explicit; local check command; good-first-issue pointer; security
  disclosure note.

All free on this public repo. Phase 2 (PR fast-path: pass->thanks/merge,
fail->explain) and the Hermes credential cron follow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds contributor infrastructure: three issue-form templates and their config, a PR template, labeler rules and workflows (labeler + contributor welcome), and CONTRIBUTING.md updates describing CI gates, security scans, and merge behavior.

Changes

Contributor workflow infrastructure

Layer / File(s) Summary
Issue template forms and configuration
.github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/config.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/ISSUE_TEMPLATE/question.yml
Adds structured issue forms: bug report (version, package, reproduction), feature request (problem, solution, alternatives, willingness to PR), question (goal, context). Adds config disabling blank issues and contact links for bot contributions and private security advisories.
PR template and automation
.github/pull_request_template.md, .github/workflows/contributor-welcome.yml, .github/workflows/labeler.yml
Adds PR template for change description, checklists, and testing instructions. Adds a contributor-welcome workflow that posts automated comments on new issues/PRs using the gh CLI and a path-based labeler workflow using actions/labeler.
Post-PR workflow documentation
CONTRIBUTING.md
Inserts a “What happens after you open a PR” section covering automated messaging, CI checks (lint, type-check, test with coverage gate, build), security scans (CodeQL, OSV), auto-labeling, failure handling, merge behavior, local quick-check commands, and private security advisory guidance.

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat(community): contributor onboarding automation' directly describes the main changeset—adding contributor experience automation (welcome workflows, issue templates, labeler, and CONTRIBUTING guidance) to improve onboarding.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/contributor-onboarding-reflex

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces GitHub issue templates, a PR template, a labeler configuration, and updates to the contribution guidelines. Feedback highlights that the corresponding GitHub Actions workflow files to trigger the auto-labeling and welcome automation are missing. Additionally, suggestions were made to include Python-specific verification steps in both the PR checklist and the local testing instructions in CONTRIBUTING.md to support Python contributors.

Comment thread .github/labeler.yml
Comment on lines +1 to +2
# Path-based auto-labeling for PRs (actions/labeler v6 syntax).
# Keeps the queue self-organizing so maintainers can route at a glance.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The PR description mentions adding contributor-welcome.yml and labeler.yml (the workflow file) to trigger the auto-labeling and welcome responses. However, no workflow files under .github/workflows/ are included in this pull request. Without the corresponding GitHub Actions workflow files, the auto-labeling configuration in .github/labeler.yml and the welcome automation will not run.

Please ensure that .github/workflows/contributor-welcome.yml and .github/workflows/labeler.yml are added to this PR.

Comment thread .github/pull_request_template.md Outdated
Comment on lines +15 to +20
## Checklist
- [ ] Branched off the latest `main` (rebased if it drifted)
- [ ] `npm run lint` and `npm run type-check` pass
- [ ] `npm test` passes and new code has tests (80% coverage gate)
- [ ] Updated docs / CHANGELOG if behavior changed
- [ ] No secrets, keys, or tokens committed

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Since the repository supports both TypeScript/JavaScript and Python packages (as indicated by the issue templates and labeler config), the PR checklist should also include guidelines/checks for Python contributions (e.g., running tests or linters in packages/python) to ensure consistent code quality across both ecosystems.

Suggested change
## Checklist
- [ ] Branched off the latest `main` (rebased if it drifted)
- [ ] `npm run lint` and `npm run type-check` pass
- [ ] `npm test` passes and new code has tests (80% coverage gate)
- [ ] Updated docs / CHANGELOG if behavior changed
- [ ] No secrets, keys, or tokens committed
## Checklist
- [ ] Branched off the latest main (rebased if it drifted)
- [ ] For JS/TS: npm run lint and npm run type-check pass
- [ ] For JS/TS: npm test passes and new code has tests (80% coverage gate)
- [ ] For Python: Python tests and linters pass (if applicable)
- [ ] Updated docs / CHANGELOG if behavior changed
- [ ] No secrets, keys, or tokens committed

Comment thread CONTRIBUTING.md Outdated
Comment on lines +34 to +39
### Quick local check (mirrors CI)

```bash
npm ci
npm run lint && npm run type-check && npm test
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Since the project supports Python contributions as well, it would be helpful to provide the local check commands for Python or mention where they can be found, so Python contributors also have a clear path to verify their changes locally.

Suggested change
### Quick local check (mirrors CI)
```bash
npm ci
npm run lint && npm run type-check && npm test
```
### Quick local check (mirrors CI)
For JavaScript/TypeScript:
Run npm ci, then npm run lint && npm run type-check && npm test.
For Python:
Run the corresponding tests and linters within the packages/python directory before submitting your PR.

@RBKunnela RBKunnela enabled auto-merge (squash) May 29, 2026 23:28
@RBKunnela

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@RBKunnela RBKunnela changed the title feat(community): contributor onboarding reflex (Phase 1) feat(community): contributor onboarding automation May 30, 2026
@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown

FriendlyAI review unavailable — upstream error

The review service returned an error, so no verdict was produced. This is a neutral result, not a block. If this PR needs to merge while review is unavailable, a maintainer can apply the friendlyai-bypass-ack-by-maintainer label as a documented soft override.

coderabbitai[bot]
coderabbitai Bot previously requested changes May 30, 2026

@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: 3

🧹 Nitpick comments (2)
.github/ISSUE_TEMPLATE/bug_report.yml (1)

5-7: ⚡ Quick win

Add an explicit “don’t paste secrets” warning in the form.

This template asks for repro/code/environment details but does not explicitly tell users to redact keys/tokens/wallet secrets before posting in a public issue.

Suggested patch
   - type: markdown
     attributes:
-      value: Thanks for reporting! Clear repro steps get bugs fixed fastest. 🙏
+      value: |
+        Thanks for reporting! Clear repro steps get bugs fixed fastest. 🙏
+        ⚠️ This is a public issue. Please redact API keys, private keys, tokens, and wallet secrets.

Also applies to: 25-55

🤖 Prompt for 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.

In @.github/ISSUE_TEMPLATE/bug_report.yml around lines 5 - 7, Add an explicit
“do not paste secrets” warning to the bug report template: update the markdown
block (the YAML node with type: markdown and its value field) to prepend a
clear, prominent note asking users to redact API keys, tokens, private
keys/wallet seeds and other secrets before posting; mirror the same warning into
the other similar markdown blocks referenced in the file (the blocks covering
the form sections around the later occurrences) so the warning appears wherever
users paste code, repro steps, or environment details.
.github/workflows/contributor-welcome.yml (1)

20-23: ⚡ Quick win

Tighten token scope by splitting issue vs PR comment jobs.

Current permissions are broader than necessary for each event. Split into two jobs (if: github.event_name == ...) so issue flow gets only issues: write and PR flow gets only pull-requests: write.

Also applies to: 24-73

🤖 Prompt for 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.

In @.github/workflows/contributor-welcome.yml around lines 20 - 23, Current
workflow grants both issues: write and pull-requests: write globally; split the
workflow into two jobs so each job has minimal permissions and an event guard:
create an "issues" job with if: github.event_name == 'issues' and permissions:
issues: write (omit pull-requests), and create a separate "pull_request" job
with if: github.event_name == 'pull_request' and permissions: pull-requests:
write (omit issues); update any shared steps into a reusable job or composite
action called by both jobs to avoid duplication and ensure the correct scoped
permissions are applied.
🤖 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/labeler.yml:
- Around line 6-8: The javascript label's changed-files globs only list '*.ts'
and '*.js' which match root-level files; update the any-glob-to-any-file entries
under the javascript -> changed-files block (the any-glob-to-any-file array) to
use recursive globs like '**/*.ts' and '**/*.js' (or '**/*.{ts,js}') so nested
JS/TS files outside src/** are matched; keep existing src/** entry and preserve
YAML structure and indentation.

In `@CONTRIBUTING.md`:
- Around line 34-39: The section titled "Quick local check (mirrors CI)" is
inaccurate because the shown bash snippet only runs lint/type-check/test; either
rename the heading to "Quick local pre-check" or update the snippet to match CI
by adding the missing steps (e.g., build and security scan commands) so the
snippet truly mirrors CI; update the header text "Quick local check (mirrors
CI)" and the accompanying bash block (the three-line npm commands) to reflect
your chosen approach.
- Around line 32-33: The two statements conflict: the sentence beginning "When
everything's green, PRs from maintainers/members merge automatically"
contradicts the rule that "all PRs require one approving review." Decide on one
consistent policy and update either the "When everything's green..." sentence to
require at least one approving review for maintainers/members (e.g., "When
everything's green and at least one approving review exists...") or modify the
"all PRs require one approving review" statement to explicitly exempt
maintainers/members, and ensure both occurrences use the exact same wording so
the CONTRIBUTING.md is unambiguous.

---

Nitpick comments:
In @.github/ISSUE_TEMPLATE/bug_report.yml:
- Around line 5-7: Add an explicit “do not paste secrets” warning to the bug
report template: update the markdown block (the YAML node with type: markdown
and its value field) to prepend a clear, prominent note asking users to redact
API keys, tokens, private keys/wallet seeds and other secrets before posting;
mirror the same warning into the other similar markdown blocks referenced in the
file (the blocks covering the form sections around the later occurrences) so the
warning appears wherever users paste code, repro steps, or environment details.

In @.github/workflows/contributor-welcome.yml:
- Around line 20-23: Current workflow grants both issues: write and
pull-requests: write globally; split the workflow into two jobs so each job has
minimal permissions and an event guard: create an "issues" job with if:
github.event_name == 'issues' and permissions: issues: write (omit
pull-requests), and create a separate "pull_request" job with if:
github.event_name == 'pull_request' and permissions: pull-requests: write (omit
issues); update any shared steps into a reusable job or composite action called
by both jobs to avoid duplication and ensure the correct scoped permissions are
applied.
🪄 Autofix (Beta)

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a3b5a651-a86e-4e1d-8189-b8d7e876c583

📥 Commits

Reviewing files that changed from the base of the PR and between 7294146 and e338544.

📒 Files selected for processing (9)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/ISSUE_TEMPLATE/question.yml
  • .github/labeler.yml
  • .github/pull_request_template.md
  • .github/workflows/contributor-welcome.yml
  • .github/workflows/labeler.yml
  • CONTRIBUTING.md

Comment thread .github/labeler.yml Outdated
Comment thread CONTRIBUTING.md Outdated
Comment thread CONTRIBUTING.md Outdated
…template

Adopts the universally-valuable structure from the AIOX PR template
(acceptance/expected-behavior + testing evidence) while keeping it
OSS-friendly — no internal story-ID / semantic-intent requirements that
external contributors can't satisfy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@RBKunnela

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

RBKunnela and others added 2 commits May 30, 2026 09:00
…ted)

Use the full canonical AIOX product PR template structure — Summary,
Related Issues, Changes Made, What-done-looks-like, Testing + Test
Results, Quality checklist, Reviewer notes — so PRs carry all the items
a reviewer needs. Excludes the internal story-driven fields (Story ID /
semantic-intent.md) that external OSS contributors can't provide.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- labeler: match nested **/*.ts, **/*.js (not just root-level)
- CONTRIBUTING: align merge policy (every PR needs an approving review;
  trusted PRs may use auto-merge) — removes the conflicting wording
- CONTRIBUTING: rename 'mirrors CI' to 'quick local pre-check' (the
  command runs lint/type-check/test, not the full build + security scans)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@RBKunnela

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously requested changes Jun 3, 2026

@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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/labeler.yml (1)

20-20: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add test_*.py pattern for pytest files.

The current Python test pattern **/*_test.py only catches files ending with _test.py. Pytest also recognizes files starting with test_, like test_auth.py. Without **/test_*.py, those files won't get the tests label.

📋 Proposed fix
 tests:
   - changed-files:
-      - any-glob-to-any-file: ['tests/**', '**/*.test.ts', '**/*.spec.ts', '**/*_test.py']
+      - any-glob-to-any-file: ['tests/**', '**/*.test.ts', '**/*.spec.ts', '**/*_test.py', '**/test_*.py']
🤖 Prompt for 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.

In @.github/labeler.yml at line 20, Update the label pattern list under the
any-glob-to-any-file entry so pytest-style filenames starting with "test_" are
included: add the glob '**/test_*.py' alongside the existing '**/*_test.py'
pattern so both test_auth-style and auth_test-style files will be matched by the
labeler.
🤖 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/pull_request_template.md:
- Around line 36-37: Update the PR template command line that currently reads
"npm run lint && npm run type-check && npm test" to include the coverage step;
modify the pipeline string so it runs "npm run coverage" (e.g., "npm run lint &&
npm run type-check && npm test && npm run coverage") so the pasted output
matches the 80% coverage gate referenced in the checklist and the "paste output"
section.

---

Outside diff comments:
In @.github/labeler.yml:
- Line 20: Update the label pattern list under the any-glob-to-any-file entry so
pytest-style filenames starting with "test_" are included: add the glob
'**/test_*.py' alongside the existing '**/*_test.py' pattern so both
test_auth-style and auth_test-style files will be matched by the labeler.
🪄 Autofix (Beta)

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4bcae4b5-0e48-4d74-b61e-3f5e4b3288bf

📥 Commits

Reviewing files that changed from the base of the PR and between f2f8ce2 and 2baba37.

📒 Files selected for processing (3)
  • .github/labeler.yml
  • .github/pull_request_template.md
  • CONTRIBUTING.md

Comment on lines +36 to +37
npm run lint && npm run type-check && npm test
# paste output

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align test-results command with the stated 80% coverage gate.

The template asks contributors to confirm the coverage gate (Line 43), but the command shown for pasted results omits coverage. Add npm run coverage so the evidence section matches the checklist expectation.

Suggested patch
 npm run lint && npm run type-check && npm test
+npm run coverage
 # paste output

Also applies to: 43-43

🤖 Prompt for 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.

In @.github/pull_request_template.md around lines 36 - 37, Update the PR
template command line that currently reads "npm run lint && npm run type-check
&& npm test" to include the coverage step; modify the pipeline string so it runs
"npm run coverage" (e.g., "npm run lint && npm run type-check && npm test && npm
run coverage") so the pasted output matches the 80% coverage gate referenced in
the checklist and the "paste output" section.

@RBKunnela RBKunnela disabled auto-merge June 3, 2026 10:40
@RBKunnela RBKunnela dismissed stale reviews from coderabbitai[bot] and coderabbitai[bot] June 3, 2026 18:06

CodeRabbit is advisory per operator policy 2026-06-03 — not a merge gate; defense-in-depth via other layers + SINKRA chain.

@RBKunnela

Copy link
Copy Markdown
Owner Author

Triage (2026-06-11): deferred. Contributor-onboarding automation is currently BLOCKED and lower priority than the active hardening/GTM track. Leaving open as deferred; revisit after design-partner #1.

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.

1 participant