Skip to content

Commit 43236f7

Browse files
author
Mike Kuykendall
committed
feat: Add comprehensive GitHub automation and governance
Complete open-source project governance setup including: AUTOMATION (GitHub Models): - Automated issue deduplication using AI - New contributor welcome messages - Structured issue templates (bug reports, feature requests) - Professional pull request template with philosophy checks GOVERNANCE & SECURITY: - Security policy with responsible disclosure process - Code of Conduct adapted from Contributor Covenant - Comprehensive issue templates for better triage BENEFITS: - Reduces maintainer workload through automation - Improves issue quality with structured templates - Protects project direction with clear governance - Welcomes contributors while maintaining standards - Establishes professional open-source practices Based on GitHub Models best practices for maintainer automation.
1 parent 7b2db1f commit 43236f7

7 files changed

Lines changed: 446 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Bug Report
2+
description: File a bug report to help us improve Shimmy
3+
title: "[Bug]: "
4+
labels: ["bug"]
5+
assignees:
6+
- Michael-A-Kuykendall
7+
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
Thanks for taking the time to fill out this bug report! Please provide as much detail as possible.
13+
14+
- type: input
15+
id: shimmy-version
16+
attributes:
17+
label: Shimmy Version
18+
description: What version of Shimmy are you running?
19+
placeholder: "v0.1.1 (or output of `shimmy --version`)"
20+
validations:
21+
required: true
22+
23+
- type: dropdown
24+
id: install-method
25+
attributes:
26+
label: Installation Method
27+
description: How did you install Shimmy?
28+
options:
29+
- cargo install shimmy
30+
- Downloaded binary from GitHub
31+
- Built from source
32+
- VS Code extension
33+
validations:
34+
required: true
35+
36+
- type: textarea
37+
id: what-happened
38+
attributes:
39+
label: What happened?
40+
description: Describe the bug and what you expected to happen
41+
placeholder: Tell us what you see! Include error messages if any.
42+
validations:
43+
required: true
44+
45+
- type: textarea
46+
id: reproduce
47+
attributes:
48+
label: Steps to Reproduce
49+
description: Provide step-by-step instructions
50+
placeholder: |
51+
1. Start shimmy with `shimmy serve`
52+
2. Make request to `http://localhost:11435/v1/chat/completions`
53+
3. See error...
54+
validations:
55+
required: true
56+
57+
- type: textarea
58+
id: logs
59+
attributes:
60+
label: Relevant logs
61+
description: Please copy and paste any relevant log output
62+
render: shell
63+
64+
- type: dropdown
65+
id: os
66+
attributes:
67+
label: Operating System
68+
options:
69+
- Windows
70+
- macOS (Intel)
71+
- macOS (Apple Silicon)
72+
- Linux (Ubuntu/Debian)
73+
- Linux (Other)
74+
validations:
75+
required: true
76+
77+
- type: checkboxes
78+
id: terms
79+
attributes:
80+
label: Code of Conduct
81+
description: By submitting this issue, you agree to follow our Code of Conduct
82+
options:
83+
- label: I agree to follow this project's Code of Conduct
84+
required: true
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Feature Request
2+
description: Suggest an idea for Shimmy
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
assignees:
6+
- Michael-A-Kuykendall
7+
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
Thanks for suggesting a feature! Please check our [ROADMAP.md](../ROADMAP.md) first to see if it's already planned.
13+
14+
- type: checkboxes
15+
id: alignment
16+
attributes:
17+
label: Feature Alignment
18+
description: Does this feature align with Shimmy's philosophy?
19+
options:
20+
- label: This feature maintains the lightweight (~5MB) binary target
21+
required: true
22+
- label: This feature supports zero-config, invisible infrastructure
23+
required: true
24+
- label: This feature enhances OpenAI API compatibility
25+
required: true
26+
27+
- type: textarea
28+
id: problem
29+
attributes:
30+
label: Problem Description
31+
description: What problem does this feature solve?
32+
placeholder: Describe the pain point this would address
33+
validations:
34+
required: true
35+
36+
- type: textarea
37+
id: solution
38+
attributes:
39+
label: Proposed Solution
40+
description: Describe your ideal solution
41+
placeholder: What would you like to happen?
42+
validations:
43+
required: true
44+
45+
- type: textarea
46+
id: alternatives
47+
attributes:
48+
label: Alternatives Considered
49+
description: What other approaches have you considered?
50+
validations:
51+
required: false
52+
53+
- type: dropdown
54+
id: priority
55+
attributes:
56+
label: Priority
57+
description: How important is this to you?
58+
options:
59+
- Nice to have
60+
- Would be helpful
61+
- Important for my use case
62+
- Critical/blocking
63+
validations:
64+
required: true
65+
66+
- type: textarea
67+
id: additional-context
68+
attributes:
69+
label: Additional Context
70+
description: Add any other context, screenshots, or examples

.github/pull_request_template.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
## Description
2+
Brief description of changes and motivation.
3+
4+
## Type of Change
5+
- [ ] Bug fix (non-breaking change that fixes an issue)
6+
- [ ] New feature (non-breaking change that adds functionality)
7+
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
8+
- [ ] Documentation update
9+
- [ ] Performance improvement
10+
- [ ] Code refactoring
11+
12+
## Shimmy Philosophy Compliance
13+
- [ ] Maintains lightweight binary size (~5MB target)
14+
- [ ] Preserves zero-config principle
15+
- [ ] Enhances OpenAI API compatibility
16+
- [ ] Follows invisible infrastructure philosophy
17+
18+
## Testing
19+
- [ ] I have tested these changes locally
20+
- [ ] I have run `cargo test` and all tests pass
21+
- [ ] I have run `cargo clippy` with no warnings
22+
- [ ] I have run `cargo fmt`
23+
24+
## Binary Size Impact
25+
Current binary size: ___ MB
26+
New binary size: ___ MB
27+
Change: ± ___ MB
28+
29+
## Checklist
30+
- [ ] My code follows the project's coding standards
31+
- [ ] I have read the [CONTRIBUTING.md](../CONTRIBUTING.md) guidelines
32+
- [ ] I have added tests for new functionality (if applicable)
33+
- [ ] I have updated documentation (if applicable)
34+
- [ ] This PR addresses an existing issue: #___
35+
36+
## Additional Notes
37+
Any additional information or context for reviewers.

.github/workflows/issue-dedup.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Detect duplicate issues
2+
3+
on:
4+
issues:
5+
types: [opened, reopened]
6+
7+
permissions:
8+
models: read
9+
issues: write
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.event.issue.number }}
13+
cancel-in-progress: true
14+
15+
jobs:
16+
continuous-triage-dedup:
17+
if: ${{ github.event.issue.user.type != 'Bot' }}
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Check for duplicate issues
21+
uses: actions/ai-inference@v1
22+
id: dedup-check
23+
with:
24+
prompt: |
25+
Analyze if this new GitHub issue is similar to any recent issues in the Shimmy project.
26+
27+
New Issue:
28+
Title: ${{ github.event.issue.title }}
29+
Body: ${{ github.event.issue.body }}
30+
31+
If this appears to be a duplicate or very similar to existing issues, respond with:
32+
"DUPLICATE: Brief explanation of similarity"
33+
34+
If this appears to be a unique issue, respond with:
35+
"UNIQUE"
36+
37+
model: openai/gpt-4o-mini
38+
temperature: 0.2
39+
40+
- name: Comment on potential duplicate
41+
if: startsWith(steps.dedup-check.outputs.response, 'DUPLICATE')
42+
uses: actions/github-script@v7
43+
with:
44+
script: |
45+
const response = `${{ steps.dedup-check.outputs.response }}`;
46+
const explanation = response.replace('DUPLICATE: ', '');
47+
48+
await github.rest.issues.createComment({
49+
owner: context.repo.owner,
50+
repo: context.repo.repo,
51+
issue_number: ${{ github.event.issue.number }},
52+
body: `👋 Hi! This issue might be similar to existing reports.
53+
54+
${explanation}
55+
56+
Please search through [existing issues](https://github.com/Michael-A-Kuykendall/shimmy/issues) to see if this has been reported already. If it's indeed a duplicate, feel free to close this issue and add your details to the existing one.
57+
58+
If this is unique, please disregard this message!
59+
60+
*This is an automated check to help keep our issue tracker organized.*`
61+
});
62+
63+
await github.rest.issues.addLabels({
64+
owner: context.repo.owner,
65+
repo: context.repo.repo,
66+
issue_number: ${{ github.event.issue.number }},
67+
labels: ['possible-duplicate']
68+
});
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Welcome New Contributors
2+
3+
on:
4+
pull_request:
5+
types: [opened]
6+
7+
permissions:
8+
pull-requests: write
9+
models: read
10+
11+
jobs:
12+
welcome:
13+
runs-on: ubuntu-latest
14+
if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
15+
steps:
16+
- name: Generate welcome message
17+
uses: actions/ai-inference@v1
18+
id: ai
19+
with:
20+
prompt: |
21+
Write a friendly, encouraging welcome message for a first-time contributor to the Shimmy project.
22+
23+
Shimmy is a lightweight (5MB), zero-config, OpenAI-compatible inference server.
24+
25+
Include:
26+
1. Thank them for their first PR
27+
2. Mention checking CONTRIBUTING.md for guidelines
28+
3. Highlight Shimmy's philosophy: lightweight, zero-config, invisible infrastructure
29+
4. Offer help if they have questions
30+
5. Mention that binary size impact should be noted in PR description
31+
32+
Keep it brief (2-3 paragraphs), welcoming, and professional.
33+
34+
model: openai/gpt-4o-mini
35+
temperature: 0.7
36+
37+
- name: Post welcome comment
38+
uses: actions/github-script@v7
39+
with:
40+
script: |
41+
const message = `${{ steps.ai.outputs.response }}`;
42+
43+
await github.rest.issues.createComment({
44+
owner: context.repo.owner,
45+
repo: context.repo.repo,
46+
issue_number: ${{ github.event.pull_request.number }},
47+
body: message
48+
});

CODE_OF_CONDUCT.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6+
7+
## Our Standards
8+
9+
Examples of behavior that contributes to a positive environment:
10+
11+
* Being respectful and inclusive in discussions
12+
* Focusing on technical merit and project goals
13+
* Providing constructive feedback on contributions
14+
* Accepting criticism gracefully and learning from mistakes
15+
* Focusing on what is best for the community and project
16+
17+
Examples of unacceptable behavior:
18+
19+
* Harassment, trolling, or discriminatory language
20+
* Personal attacks or inflammatory comments
21+
* Publishing others' private information without permission
22+
* Spam, off-topic discussions, or promotion of unrelated projects
23+
* Any conduct that would be inappropriate in a professional setting
24+
25+
## Project Focus
26+
27+
This project maintains a clear focus on technical excellence:
28+
29+
- **Stay on topic**: Discussions should relate to Shimmy's development
30+
- **Respect the philosophy**: Contributions should align with lightweight, zero-config principles
31+
- **Quality over quantity**: We value thoughtful contributions over high volume
32+
- **Technical merit**: Decisions are made based on technical merit and project goals
33+
34+
## Enforcement Responsibilities
35+
36+
The project maintainer is responsible for clarifying and enforcing standards of acceptable behavior and will take appropriate corrective action in response to any behavior deemed inappropriate, threatening, offensive, or harmful.
37+
38+
## Scope
39+
40+
This Code of Conduct applies within all project spaces, including:
41+
- GitHub repository (issues, PRs, discussions)
42+
- Project communications
43+
- Public representation of the project
44+
45+
## Enforcement
46+
47+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to [michaelallenkuykendall@gmail.com](mailto:michaelallenkuykendall@gmail.com).
48+
49+
All complaints will be reviewed and investigated promptly and fairly. The maintainer is obligated to respect the privacy and security of the reporter.
50+
51+
## Enforcement Guidelines
52+
53+
The maintainer will follow these Community Impact Guidelines:
54+
55+
### 1. Correction
56+
**Community Impact**: Minor inappropriate behavior or technical disagreement.
57+
**Consequence**: Private clarification about the nature of the violation and explanation of why the behavior was inappropriate.
58+
59+
### 2. Warning
60+
**Community Impact**: Moderate violation or pattern of inappropriate behavior.
61+
**Consequence**: Warning with consequences for continued behavior.
62+
63+
### 3. Temporary Ban
64+
**Community Impact**: Serious violation of community standards.
65+
**Consequence**: Temporary ban from project interaction.
66+
67+
### 4. Permanent Ban
68+
**Community Impact**: Sustained inappropriate behavior or severe violation.
69+
**Consequence**: Permanent ban from all project interaction.
70+
71+
## Attribution
72+
73+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0.

0 commit comments

Comments
 (0)