@@ -10,6 +10,22 @@ approachable and respectful.
1010> You can use [ Wizard Browser Extension] [ 1 ] to simplify some of the workflows
1111> described in these Guidelines.
1212
13+ ## Table of Contents
14+
15+ - [ Getting started] ( #getting-started )
16+ - [ Goal] ( #goal )
17+ - [ Problem] ( #problem )
18+ - [ Solution] ( #solution )
19+ - [ Communication Guidelines] ( #communication-guidelines )
20+ - [ PR Requirements] ( #pr-requirements )
21+ - [ Commit Signature Verification] ( #commit-signature-verification )
22+ - [ Scoping] ( #scoping )
23+ - [ CI Checks] ( #ci-checks )
24+ - [ Drafting] ( #drafting )
25+ - [ Naming] ( #naming )
26+ - [ Requesting Review] ( #requesting-review )
27+ - [ Review Process] ( #review-process )
28+
1329## Getting started
1430
1531There are three core contribution pillars:
@@ -69,17 +85,27 @@ issue so the dependency is visible.
6985### Problem
7086
7187Once the Goal is clear, you must identify what stops you from achieving it.
72- Anything that is stopping you - is a “ Problem” . A typical question to ask is:
88+ Anything that is stopping you - is a " Problem" . A typical question to ask is:
7389"Why is this Goal not achieved and what is the Problem?".
7490
7591Sometimes, a Goal already has a few identified problems, but not always.
7692
7793> [ !NOTE]
7894> Once a Problem is identified, we report it as a
7995> [ GitHub Issue] ( https://docs.github.com/en/issues ) with the following naming
80- > pattern: ` Problem: [statement] ` . We’ re counting on our contributors to
96+ > pattern: ` Problem: [statement] ` . We' re counting on our contributors to
8197> identify problems. Keep a Problem name short (under 65 chars) and crystal
8298> clear.
99+ >
100+ > The statement must read as a ** job story** : describe what the specific user
101+ > ** can't do** or what is broken for them. Ask: _ "What can [ user] not do
102+ > because of this problem?"_
103+
104+ | ** Good** ✅ | ** Bad** ❌ | ** Why?** |
105+ | ------------------------------------------------ | ---------------------------------------------- | ------------------------------ |
106+ | ` operators can't view their account balance ` | ` operators don't have their account balance ` | Describes inability, not state |
107+ | ` users can't submit a form without refreshing ` | ` form submission issue ` | Vague, no actor or action |
108+ | ` admins can't export reports as CSV ` | ` CSV export missing ` | No subject, not a job story |
83109
84110Make sure each Problem issue is interlinked with it's Goal issue:
85111
@@ -100,7 +126,7 @@ understand the context.
100126The third pillar of successful contribution is the Solution.
101127
102128Different problems may require different sets of skills.
103- Whether it’ s code, design, or marketing material, we expect a lean and clean
129+ Whether it' s code, design, or marketing material, we expect a lean and clean
104130solution from the contributor.
105131
106132> [ !NOTE]
@@ -113,14 +139,14 @@ solution from the contributor.
113139> is linked to the Problem, which is linked to the Goal — that chain is
114140> sufficient. Duplicate comments add noise.
115141
116- ### Referencing
142+ ## Communication Guidelines
117143
118144When referencing issues or pull requests in any GitHub discussion, use a list
119145item format to enable automatic title rendering and improve readability. This
120146ensures that GitHub automatically expands the reference to show the issue/PR
121147title.
122148
123- #### Correct Format
149+ ### Correct Format
124150
125151Use a list item to reference issues or PRs:
126152
@@ -133,7 +159,7 @@ See these related items:
133159- #12
134160```
135161
136- #### Incorrect Formats
162+ ### Incorrect Formats
137163
138164Avoid simply pasting the URL inline.
139165
@@ -148,13 +174,23 @@ Check this out: <issue_or_pr_url> Related: <issue_or_pr_url> See
148174
149175## PR Requirements
150176
151- All PRs, whether for source code, design, or copy changes, must comply with our
152- PR Requirements .
177+ All PRs, whether for source code, design, or copy changes, must comply with the
178+ following requirements .
153179
154180> [ !WARNING]
155181> PRs that do not correspond to the following criteria are usually rejected.
156182
157- ## Commit Signature Verification
183+ Before marking your PR as ready for review, confirm:
184+
185+ - [ ] Commits are signed
186+ - [ ] PR scope fits within 3–4 hours of work
187+ - [ ] All CI checks pass
188+ - [ ] PR is linked to a Problem issue
189+ - [ ] At least one reviewer is assigned
190+ - [ ] Time is reported
191+ - [ ] PR title follows ` type(scope): action ` naming convention
192+
193+ ### Commit Signature Verification
158194
159195For the security and integrity of our project, we require all contributors to
160196sign their commits.
@@ -166,7 +202,7 @@ For detailed instructions on why and how to sign your commits refer to
166202> Ensure your Git version supports SSH signature verification (Git 2.34 or
167203> later).
168204
169- ## Scoping
205+ ### Scoping
170206
171207> [ !NOTE]
172208> Here's a [ good resource] ( https://youtu.be/bmSAYlu0NcY?si=2lLQeY1PGCY9tcvX ) on software design philosophy.
@@ -181,7 +217,7 @@ We usually reject and close PRs which do not have activity for the last 24
181217hours, unless there is a clear comment explaining the reason why that PR is
182218stalled.
183219
184- ## CI Checks
220+ ### CI Checks
185221
186222To maintain the quality and integrity of our project, all PRs must successfully
187223pass the required Continuous Integration (CI) checks before being marked as
@@ -200,7 +236,7 @@ The required checks are as follows:
200236> requesting a review. Any PR with unresolved CI checks should remain in "draft"
201237> status until all issues are fixed.
202238
203- ## Drafting
239+ ### Drafting
204240
205241When starting to work on a Problem, you must:
206242
@@ -214,7 +250,7 @@ When starting to work on a Problem, you must:
2142501 . Before marking your PR as ready for review, assign ** at least one reviewer**
215251 (team or individual). Do not merge without approved review.
216252
217- ### Design PRs
253+ #### Design PRs
218254
219255Initiate a PR with a note in the DESIGN.md file detailing the addressed design
220256aspects. Design PRs use ` docs(ui) ` as the "type" and "scope" of its name. i.e.:
@@ -230,7 +266,7 @@ Structure the design file with the following markup:
230266 - [[state]](https://figma.com/your-design-file-url)
231267```
232268
233- #### Key
269+ ##### Key
234270
235271- ** ` /... ` ** - Represents a page.
236272- ** ` {...} ` ** - Represents a dynamic parameter within a URL.
@@ -256,7 +292,7 @@ If there isn't an existing DESIGN.md file:
2562921 . Create a new file named DESIGN.md.
2572931 . Link it from README.md.
258294
259- ## Naming
295+ ### Naming
260296
261297> [ !NOTE]
262298> We use PR titles to communicate changes to all stakeholders, including
@@ -268,48 +304,46 @@ PR names must be:
2683041 . ** Follow [ Conventional Commits] ( https://www.conventionalcommits.org ) **
2693051 . ** Clear & simple** (present tense, action-oriented)
270306
271- ### Example Comparison
307+ #### Example Comparison
272308
273309| ** Good Examples** ✅ | ** Bad Examples** ❌ | ** Why?** |
274310| ---------------------- | ------------------------------ | ------------------ |
275311| ` feat(ui): play music ` | ` Create player ` | Missing scope/type |
276312| ` fix(sdk): mute sound ` | ` Fix: add file to mute sound ` | Technical details |
277313| ` test(api): open door ` | ` Feat: modified door function ` | Vague, past tense |
278314
279- ---
280-
281- ### Key Principles
315+ #### Key Principles
282316
283- #### What to Focus On
317+ ##### What to Focus On
284318
285- A feature isn’ t a button, toggle, or handler—it’ s
319+ A feature isn' t a button, toggle, or handler—it' s
286320** what the user gains from it** . Ask:
287321
288322- ❌ _ "What am I building?"_ → Leads to technical labels.
289323- ✅ _ "What will users be able to do?"_ → Leads to clear value.
290324
291- #### Why It Matters
325+ ##### Why It Matters
292326
293327- ** Clarity** : Engineers, PMs, and stakeholders instantly understand the impact.
294328- ** Consistency** : Aligns with product-facing language (release notes, docs).
295329- ** User-Centricity** : Work is driven by user needs, not just code changes.
296330
297- #### How to Apply It
331+ ##### How to Apply It
298332
2993331 . ** Replace UI labels with actions** : Wrong: "Add dropdown for filters" →
300334 Correct:"Filter search results by category"
3013351 . ** Describe outcomes, not components** : Wrong: "Fix API error handling" →
302336 Correct:"Gracefully recover from connection errors"
3033371 . ** Use user action verbs** : _ View, Play, Customize, Save_ , etc.
304338
305- ### Before Submitting, Ask
339+ #### Before Submitting, Ask
306340
3073411 . Does it use ` type(scope [Optional]): action ` format?
3083421 . Could a non-technical user understand the benefit?
3093431 . Is it in the present tense?
3103441 . Does it focus on user capability (not code)?
311345
312- ## Requesting Review
346+ ### Requesting Review
313347
314348Once your PR is ready, assign reviewers and mark it as "ready to review." But
315349before that, report the time you have spent on it.
@@ -321,7 +355,9 @@ before that, report the time you have spent on it.
321355> Programming and designing isn't just about writing code or creating designs;
322356> it also involves planning (40%) and QA (20-30%).
323357
324- ### Reviewing PRs
358+ ### Review Process
359+
360+ #### Giving a Review
325361
326362Use ** Request Changes** (reject) only for objective problems:
327363
@@ -332,13 +368,13 @@ Use **Request Changes** (reject) only for objective problems:
332368
333369Use ** Comment** for optional improvements or suggestions.
334370
335- ### Scout approach
371+ #### Scout Approach
336372
337373If you ever have free time, be proactive and apply the scout approach: own the
338374job, look for PRs that still need reviewers, and offer timely feedback so work
339375keeps moving.
340376
341- ### Code Quality and Reviews
377+ #### Code Quality
342378
343379Aim for solutions that work correctly 99.9% of the time. Be independent and
344380thorough in your QA - reviewers are not QA team members but are there for a
0 commit comments