DEV Community

Timevolt
Timevolt

Posted on

How I leveled up my GitHub profile like a Jedi Master

The Quest Begins (The "Why")

Ever felt like your GitHub graph is a lonely desert, with only a few commits scattered like sand dunes? I was there a few months ago. I’d pushed a few personal projects, but nothing that screamed “hire me” to a recruiter scrolling through profiles. I kept seeing job posts that asked for “active open‑source contributor” and wondered how to get that badge without spending months on a massive refactor.

The turning point came when I stumbled upon a “good first issue” label on a popular CLI tool I used daily. The issue was simple: the command crashed when a user passed a negative timeout value. No tests covered that case, and the fix looked like a one‑liner. I thought, “If I can nail this, I’ll have a concrete story to tell—and a PR that actually helps people.” That tiny bug became my dragon, and I was ready to slay it.

The Revelation (The Insight)

Here’s the secret: write a failing test that reproduces the bug, then fix it, and ship both in a single PR.

Why does this work so well?

  1. It shows you understand the codebase – you didn’t just guess; you located the exact spot where things go wrong.
  2. It proves you can add value – the test prevents regression, and the fix resolves the user‑facing bug.
  3. It’s low‑risk for maintainers – a test + fix is easier to review than a large feature or a vague docs tweak.
  4. It leaves a clear, measurable trace – your contribution appears as a test file and a source change, both of which stick around forever in the repo’s history.

In short, you turn a “maybe helpful” edit into a “definitely valuable” one.

Wielding the Power (Code & Examples)

Let’s walk through a real example. I chose the open‑source project cli-timeout (a tiny Node utility that wraps commands with a timeout). The issue: passing --timeout -5 caused the program to throw an uncaught exception instead of exiting gracefully.

The Struggle (Before)

The repo had no test for negative timeouts. The relevant code looked like this:

// src/timeout.js
function parseTimeout(raw) {
  const ms = Number(raw);
  if (isNaN(ms)) {
    throw new Error('Timeout must be a number');
  }
  return ms; // <-- negative numbers slip through!
}
Enter fullscreen mode Exit fullscreen mode

And the CLI entry point simply used the returned value:

// src/index.js
const timeout = parseTimeout(argv.timeout);
setTimeout(() => process.exit(1), timeout); // boom if timeout < 0
Enter fullscreen mode Exit fullscreen mode

Running cli-timeout --timeout -5 would instantly exit with code 0 (because setTimeout with a negative delay fires immediately) – not the intended behavior.

What NOT to Do

A common temptation is to submit a PR that only updates the README or adds a comment like “handle negative timeouts”. That’s nice, but it doesn’t protect against regression, and maintainers often see it as low‑effort noise. Avoid that trap.

The Victory (After)

I added a test in test/timeout.test.js that asserts the function throws for negative values, then I fixed the source to reject them.

Test (new file):

// test/timeout.test.js
const { parseTimeout } = require('../src/timeout');

describe('parseTimeout', () => {
  it('throws for negative timeout values', () => {
    expect(() => parseTimeout('-5')).toThrow('Timeout must be non‑negative');
  });

  it('accepts zero and positive numbers', () => {
    expect(parseTimeout('0')).toBe(0);
    expect(parseTimeout('100')).toBe(100);
  });
});
Enter fullscreen mode Exit fullscreen mode

Fixed source:

// src/timeout.js
function parseTimeout(raw) {
  const ms = Number(raw);
  if (isNaN(ms)) {
    throw new Error('Timeout must be a number');
  }
  if (ms < 0) {
    throw new Error('Timeout must be non‑negative');
  }
  return ms;
}

module.exports = { parseTimeout };
Enter fullscreen mode Exit fullscreen mode

I ran the test suite locally (npm test) – all green. Then I opened a PR titled “feat: reject negative timeout values” with a short description linking to the issue. The maintainer reviewed it, left a single comment about adding a typo fix in the changelog, merged it within a few hours, and boom – my first meaningful open‑source contribution was live.

The PR showed up on my profile as a clear test addition and a source fix, exactly the kind of signal recruiters look for.

Why This New Power Matters

After that PR merged, my contribution graph got a fresh green square, and I had a concrete story to tell in interviews: “I identified a missing test for a edge case, wrote it, fixed the bug, and got it merged in a popular CLI tool.”

More importantly, the technique scales. You can repeat it on any project that uses a testing framework (Jest, Mocha, pytest, Go’s testing, etc.). Each time you add a failing test + fix, you:

  • Learn the project’s architecture faster.
  • Earn trust from maintainers (they see you’re thoughtful, not just chasing stats).
  • Build a portfolio of small, high‑impact contributions that together make your GitHub look like a well‑maintained library rather than a ghost town.

It’s like finding a hidden shortcut in a game – you still have to defeat the boss, but you shave off a lot of grind time.

Your Turn – The Quest Awaits

Ready to try it yourself? Here’s a quick action plan:

  1. Pick a project you use that has a “good first issue” label or an open bug with no test.
  2. Clone the repo, run its test suite to make sure everything passes locally.
  3. Write a test that reproduces the bug (expect it to fail).
  4. Fix the bug so the test passes.
  5. Push your branch, open a PR with a clear title like “test: add case for X bug; fix: handle Y”.
  6. Iterate based on feedback, then celebrate when it’s merged.

Drop a comment below with the link to your first PR – I’ll cheer you on! And remember: the goal isn’t to collect stars; it’s to show you can read code, write tests, and ship real fixes. That’s the kind of Jedi‑level signal that turns a deserted GitHub profile into a bustling hub of trust.

May the commits be with you! 🚀

Top comments (0)