Skip to content

Commit 8596d67

Browse files
committed
docs: add contribution process, maintainer guide, and stale bot
- CONTRIBUTING.md: issue-first rule, design principles, rejection guidelines, review process - docs/maintainer-guide.md: public maintenance process, versioning, bug severity, release flow - .github/workflows/stale.yml: auto-stale at 30 days, auto-close at 44 days - README.md: add CI badge - .gitignore: exclude private maintainer SOP
1 parent 5c9250f commit 8596d67

5 files changed

Lines changed: 124 additions & 13 deletions

File tree

.github/workflows/stale.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: 'Close stale issues'
2+
on:
3+
schedule:
4+
- cron: '0 9 * * 1' # Every Monday at 9am UTC
5+
6+
permissions:
7+
issues: write
8+
9+
jobs:
10+
stale:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/stale@v9
14+
with:
15+
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. If this is still relevant, please comment to keep it open.'
16+
close-issue-message: 'Closed due to inactivity. Feel free to reopen with new information.'
17+
days-before-stale: 30
18+
days-before-close: 14
19+
stale-issue-label: 'stale'
20+
exempt-issue-labels: 'confirmed,help-wanted,critical'
21+
stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs.'
22+
days-before-pr-stale: 21
23+
days-before-pr-close: 14
24+
stale-pr-label: 'stale'

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Private maintainer files
2+
docs/maintainer-sop-private.md

CONTRIBUTING.md

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,32 @@
22

33
Thanks for your interest in improving the Notetaker skill. This is a single-file product, so contributions tend to be focused and high-impact.
44

5+
## Before You Start
6+
7+
**Open an issue first.** All contributions start as an issue - bug report, feature request, or skill improvement. Wait for a `confirmed` or `help-wanted` label before starting work. This prevents wasted effort on changes that don't align with the project direction.
8+
9+
PRs without a linked issue will be closed with a note to open an issue first.
10+
511
## License
612

7-
This project uses MIT license. By submitting a pull request, you agree that your contributions are licensed under the same MIT license. No CLA required.
13+
MIT license. By submitting a pull request, you agree that your contributions are licensed under the same terms. No CLA required.
14+
15+
## Design Principles
16+
17+
These guide every decision. PRs that conflict with these principles will be rejected:
18+
19+
1. **Minimal friction** - The skill exists to capture ideas before they're forgotten. Anything that adds steps or cognitive load works against this
20+
2. **Small by design** - The skill file stays under ~1,500 words. Complexity lives in `references/`, not in the main file
21+
3. **Capture, don't act** - Claude records and moves on. It never analyzes, expands, or offers to help with note content during capture
22+
4. **Voice-first** - Primary use case is hands-free dictation. Triggers must work when spoken, not just typed
823

924
## What to Contribute
1025

1126
**High value:**
12-
- New trigger patterns that feel natural
1327
- Voice cleanup rule improvements (especially for non-English speakers)
1428
- Edge cases where classification fails
15-
- Real-world session transcripts showing unexpected behavior
29+
- Real-world session transcripts showing unexpected behaviour
30+
- Bug fixes with clear reproduction steps
1631

1732
**Lower priority:**
1833
- Formatting changes to the skill file
@@ -21,11 +36,12 @@ This project uses MIT license. By submitting a pull request, you agree that your
2136

2237
## How to Submit
2338

24-
1. Fork the repository
25-
2. Create a branch: `improvement/short-description`
26-
3. Make your changes
27-
4. Test by uploading the modified `notetaker.md` to a Claude Project and running through 10+ notes
28-
5. Submit a PR using the template
39+
1. Open an issue and wait for `confirmed` or `help-wanted` label
40+
2. Fork the repository
41+
3. Create a branch: `improvement/short-description`
42+
4. Make your changes
43+
5. Test by uploading the modified `notetaker.md` to a Claude Project and running through 10+ notes
44+
6. Submit a PR referencing the issue number
2945

3046
## Skill File Changes
3147

@@ -37,14 +53,26 @@ All changes to `notetaker.md` require:
3753

3854
See `.github/SKILL_REVIEW_CHECKLIST.md` for the full review criteria.
3955

56+
## Review Process
57+
58+
PRs are reviewed within 72 hours. Three outcomes:
59+
60+
- **Approve** - Merged via squash commit
61+
- **Request changes** - One round of revision. Clear feedback on what needs to change
62+
- **Close** - With an explanation. Common reasons:
63+
- Out of scope for the skill's purpose
64+
- Adds complexity that outweighs the benefit
65+
- Conflicts with design principles above
66+
- No linked issue or issue wasn't confirmed
67+
68+
Rejections are not personal. If you disagree, discuss in the issue - not the PR.
69+
4070
## Reporting Issues
4171

4272
Use the issue templates:
43-
- **Bug report:** Claude does something wrong during capture or processing
44-
- **Feature request:** A new capability you want
45-
- **Skill improvement:** A better way to phrase an existing instruction
46-
47-
Include a conversation transcript when reporting bugs. Copy-paste the exchange showing the problem.
73+
- **Bug report** - Claude does something wrong during capture or processing. Include a conversation transcript
74+
- **Feature request** - A new capability you want. Explain the use case, not just the feature
75+
- **Skill improvement** - A better way to phrase an existing instruction
4876

4977
## Code of Conduct
5078

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
44
[![Version](https://img.shields.io/badge/version-3.0.0-blue.svg)](CHANGELOG.md)
5+
[![CI](https://github.com/agntlab/claude-notetaker/actions/workflows/skill-scan.yml/badge.svg)](https://github.com/agntlab/claude-notetaker/actions/workflows/skill-scan.yml)
56

67
Voice-friendly note capture for Claude. Capture ideas hands-free while driving, walking, or cooking. Fillers, false starts, and dictation artifacts are cleaned up automatically. Notes are organized into handoff files you can pick up in future sessions.
78

docs/maintainer-guide.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Maintainer Guide
2+
3+
How this project is maintained, so contributors know what to expect.
4+
5+
## Contribution Flow
6+
7+
1. **Issue first** - All work starts as an issue. Bug reports, feature requests, and improvements go through issue templates
8+
2. **Triage** - Issues are reviewed within 48 hours and labelled: `confirmed`, `help-wanted`, `cannot-reproduce`, or closed with explanation
9+
3. **PR** - Once an issue has `confirmed` or `help-wanted`, contributors can fork, branch, and submit a PR referencing the issue
10+
4. **Review** - PRs are reviewed within 72 hours. One round of revision if needed
11+
5. **Merge** - Squash merge to keep history clean. CHANGELOG updated with each release
12+
13+
## Bug Severity
14+
15+
| Label | Definition | Response Time |
16+
|-------|-----------|---------------|
17+
| `critical` | Skill breaks Claude's behaviour (e.g., acts on note content, ignores triggers entirely) | Fixed within 1 week by maintainer |
18+
| `minor` | Edge case, cosmetic, or non-blocking issue | Labelled `help-wanted` for community |
19+
20+
## Versioning
21+
22+
This project uses [Semantic Versioning](https://semver.org/):
23+
24+
- **Patch** (3.0.x) - Bug fixes, typo corrections
25+
- **Minor** (3.x.0) - New triggers, new reference files, non-breaking improvements
26+
- **Major** (x.0.0) - Breaking changes to skill structure, trigger removals
27+
28+
## Release Process
29+
30+
1. Changes merged to `main` via squash merge
31+
2. CHANGELOG.md updated
32+
3. Git tag created (e.g., `v3.0.1`)
33+
4. GitHub Release published with CHANGELOG entry as notes
34+
35+
## Branch Protection
36+
37+
- All changes to `main` go through PRs
38+
- CI must pass before merge
39+
- Maintainer approval required
40+
- Squash merge only
41+
42+
## Stale Issues
43+
44+
- Issues with no activity for 30 days receive a `stale` label
45+
- 14 more days of silence and the issue is closed
46+
- Stale issues can be reopened with new information
47+
48+
## If a Bad Merge Gets Through
49+
50+
1. Revert via `git revert` (not force push)
51+
2. Comment on the original PR explaining what broke
52+
3. Open a new issue for the proper fix
53+
54+
## Decision Log
55+
56+
Non-obvious design decisions are recorded in `docs/decisions/`. Format: `YYYY-MM-DD-decision-title.md` with context, options considered, and reasoning. This prevents re-litigating settled decisions.

0 commit comments

Comments
 (0)