Skip to content

Commit 1c0528c

Browse files
committed
docs: revamp CONTRIBUTING.md with proposal workflow and PR template
Restructure contribution guidelines to clarify expectations: - Issues are the primary entry point for all contributions - PRs are for small fixes; features require issue + proposal first - Implementation is handled by maintainer after proposal approval - All development must use devcontainer (make devc) Add PR template to surface checklist when contributors open PRs. Add proposals/ directory with TEMPLATE.md for feature proposals.
1 parent e32f216 commit 1c0528c

7 files changed

Lines changed: 103 additions & 42 deletions

File tree

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!-- Thanks for contributing! Please read CONTRIBUTING.md before submitting. -->
2+
3+
## Type
4+
5+
- [ ] Bug fix
6+
- [ ] Small improvement (docs, typo, minor refactor)
7+
- [ ] Feature proposal (`proposals/` only — see [CONTRIBUTING.md](../CONTRIBUTING.md))
8+
9+
## Linked Issue
10+
11+
<!-- Recommended for bug fixes. Required for proposals. -->
12+
13+
Closes #
14+
15+
## Checklist
16+
17+
- [ ] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
18+
- [ ] Tests included and passing (`make check`) — for code changes
19+
- [ ] No unrelated changes in the diff
20+
- [ ] Scope is focused — one concern per PR

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ docs/superpowers/
3030
!.skillshare/registry.yaml
3131
!.skillshare/.gitignore
3232
/specs/
33+
!/proposals/
3334
.pnpm-store/
3435
.feature-radar/
3536
.cache/

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [0.19.1] - 2026-04-13
4+
5+
### Bug Fixes
6+
7+
- **Structured output no longer corrupted by update notices**`--json`, `-j`, and `--format json/sarif/markdown` modes could emit a trailing human-readable update notification into stdout, producing invalid JSON for downstream consumers. The update check is now skipped entirely in structured-output modes, and the notification itself writes to stderr as a safety net. Refs: #129
8+
39
## [0.19.0] - 2026-04-11
410

511
### New Features

CONTRIBUTING.md

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,74 @@
22

33
Thanks for your interest in contributing! This guide helps you get started.
44

5-
## How to Contribute
5+
## Start with an Issue
66

7-
### 1. Open an Issue First
7+
The best way to contribute is to [open an issue](https://github.com/runkids/skillshare/issues/new). Issues are where ideas, feature requests, and design discussions happen. This helps us:
88

9-
Before writing code, [open an issue](https://github.com/runkids/skillshare/issues/new) to describe what you'd like to change and why. This helps us:
9+
- Align on whether the change fits the project direction
10+
- Agree on scope and approach before any code is written
11+
- Avoid investing time in work that may not be merged
1012

11-
- Align on the scope and approach
12-
- Avoid duplicate effort
13-
- Discuss alternative solutions early
13+
**Please open an issue before writing code**, even if you're confident in the approach. Skipping this step is the most common reason contributions can't be accepted.
1414

15-
Even small changes benefit from a quick issue — it gives context for reviewers and future contributors.
15+
## Pull Requests
1616

17-
### 2. Submit a Draft PR
17+
### What PRs are good for
1818

19-
If you'd like to propose an implementation, open a [draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests) and link it to the issue. Draft PRs let us:
19+
PRs work best for **small, focused changes**:
2020

21-
- Collaborate on the approach before investing time in polish
22-
- Catch design mismatches early
23-
- Provide incremental feedback
21+
- Bug fixes with a clear reproduction
22+
- Typo and documentation corrections
23+
- Small improvements (a few files, under ~200 lines of meaningful change)
2424

25-
> **Note:** Due to the nature of this project, most PRs won't be merged directly — but every contribution is valuable. Your draft PR serves as a concrete reference that shapes the final implementation.
25+
These can go straight to a PR (still link to an issue if one exists).
2626

27-
### 3. Include Tests
27+
### Feature Ideas
2828

29-
PRs with test coverage are much easier to review and merge. skillshare has both unit and integration tests:
29+
For new features or large changes:
3030

31-
- **Unit tests**: alongside source files (`*_test.go`)
32-
- **Integration tests**: `tests/integration/` using `testutil.Sandbox`
31+
1. **Open an issue** to describe the idea and the problem it solves
32+
2. **Submit a proposal** — copy [`proposals/TEMPLATE.md`](proposals/TEMPLATE.md), fill it in, and open a PR to `proposals/`
3333

34-
Run the full check before submitting:
34+
Approved proposals will be added to the roadmap. Implementation is handled by the maintainer to ensure consistency with the project's architecture and codebase conventions.
3535

36-
```bash
37-
make check # format + lint + unit + integration tests
38-
```
39-
40-
## Development Setup
36+
> **Note:** Due to the nature of this project, most feature PRs won't be merged directly — but every contribution is valuable. Your PR serves as a concrete reference that shapes the final implementation.
4137
42-
### Option A: Dev Containers (Recommended)
38+
### PR Checklist
4339

44-
Open in [Dev Containers](https://containers.dev/) — Go toolchain, Node.js, pnpm, and demo content are pre-configured.
40+
- [ ] Linked to an issue (required for features, recommended for bug fixes)
41+
- [ ] Tests included and passing (`make check`)
42+
- [ ] No unrelated changes in the diff
43+
- [ ] Commit messages explain "why", not just "what"
44+
- [ ] Scope is focused — one concern per PR
4545

46-
### Option B: Local
46+
## Development Setup
4747

48-
Requirements: Go 1.23+
48+
All development and testing should be done inside the **devcontainer**. This ensures a consistent environment (Go toolchain, Node.js, pnpm, and demo content are pre-configured).
4949

5050
```bash
5151
git clone https://github.com/runkids/skillshare.git
5252
cd skillshare
53-
make build # build binary
54-
make check # format + lint + test
53+
make devc # start devcontainer + enter shell (one step)
5554
```
5655

57-
### Useful Commands
56+
Once inside the devcontainer:
5857

5958
```bash
60-
make build # build binary → bin/skillshare
61-
make test # unit + integration tests
62-
make test-unit # unit tests only
63-
make lint # go vet
64-
make fmt # gofmt
65-
make check # fmt + lint + test (must pass before PR)
66-
make ui-dev # Go API server + Vite HMR for Web UI
59+
make build # build binary → bin/skillshare
60+
make test # unit + integration tests
61+
make check # fmt + lint + test (must pass before PR)
62+
make ui-dev # Go API server + Vite HMR for Web UI
6763
```
6864

69-
## PR Checklist
65+
Other devcontainer commands:
7066

71-
- [ ] Linked to an issue
72-
- [ ] Tests included and passing (`make check`)
73-
- [ ] No unrelated changes in the diff
74-
- [ ] Commit messages explain "why", not just "what"
67+
```bash
68+
make devc-down # stop devcontainer
69+
make devc-restart # restart devcontainer
70+
make devc-reset # full reset (remove volumes)
71+
make devc-status # show devcontainer status
72+
```
7573

7674
## Questions?
7775

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ Thanks to everyone who helped shape skillshare.
253253
<a href="https://github.com/jessica-engel"><img src="https://github.com/jessica-engel.png" width="50" style="border-radius:50%" alt="jessica-engel"></a>
254254
<a href="https://github.com/AlimuratYusup"><img src="https://github.com/AlimuratYusup.png" width="50" style="border-radius:50%" alt="AlimuratYusup"></a>
255255
<a href="https://github.com/thor-shuang"><img src="https://github.com/thor-shuang.png" width="50" style="border-radius:50%" alt="thor-shuang"></a>
256+
<a href="https://github.com/bishopmatthew"><img src="https://github.com/bishopmatthew.png" width="50" style="border-radius:50%" alt="bishopmatthew"></a>
256257

257258
---
258259

proposals/TEMPLATE.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Feature Proposal: [Title]
2+
3+
## Problem
4+
5+
What problem does this solve? Who is affected?
6+
7+
## Proposed Solution
8+
9+
Describe your approach at a high level. Include:
10+
11+
- What changes are needed (CLI, UI, internal packages)
12+
- How it interacts with existing features
13+
- Any new dependencies
14+
15+
## Alternatives Considered
16+
17+
What other approaches did you consider? Why did you choose this one?
18+
19+
## Scope
20+
21+
Estimate the scope of changes:
22+
23+
- [ ] Small (1-3 files, < 200 lines)
24+
- [ ] Medium (3-10 files, 200-500 lines)
25+
- [ ] Large (10+ files, 500+ lines)
26+
27+
## Open Questions
28+
29+
List anything you're unsure about or would like feedback on.

website/src/pages/changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ All notable changes to skillshare are documented here. For the full commit histo
99

1010
---
1111

12+
## [0.19.1] - 2026-04-13
13+
14+
### Bug Fixes
15+
16+
- **Structured output no longer corrupted by update notices**`--json`, `-j`, and `--format json/sarif/markdown` modes could emit a trailing human-readable update notification into stdout, producing invalid JSON for downstream consumers. The update check is now skipped entirely in structured-output modes, and the notification itself writes to stderr as a safety net. Refs: #129
17+
1218
## [0.19.0] - 2026-04-11
1319

1420
### New Features

0 commit comments

Comments
 (0)