Tutorial

The full cycle, in one scroll.

Follow one commitment — User Auth — from first pitch to retro. You'll see exactly where your normal workflow becomes Heliostat's input, and where it doesn't.

Pitch

during cool-down

Commit

start of cycle

Build

daily, for weeks

Cool-down

1 week after cycle

Before you start

Install the Heliostat GitHub App on the repos you want tracked.

Heliostat is a GitHub App with three narrow permissions: repository metadata, repository webhooks, and your email address. No code access, no issues, no PRs. Install it on only the repos you want to hand to Heliostat — organizations and individual accounts both work. Push events flow to a single app-wide webhook; Heliostat matches commits to your scopes automatically. Uninstall any time from your GitHub account settings.

Phase 1 · during cool-down

Pitch.

Before you commit weeks, draft a pitch: name the pain, pick a t-shirt size, sketch the solution, surface risks. Pitching is where bad ideas get caught cheaply.

1

Draft the pitch.

Five fields, one page. Heliostat auto-saves as you type and gates the "Mark ready" button on a readiness checklist — problem, solution, and rabbit holes all have to be present before a pitch can be committed to. An optional "Other notes" field catches everything that doesn't fit above. "Ask The Senior" is available from the moment you open a pitch — it'll flag shallow pitches before you commit.

User Auth
Step 1 · T-shirt size — set the box first
S
~3 days
M
1–2 weeks
L
3–4 weeks
XL
full cycle
Step 2 · Problem

The pain. Not the fix.

Users have no way to sign in. Every demo turns into a seed-user walkthrough.
Step 3 · Solution — fat marker only

Broad strokes. Precise = building.

Sign in with GitHub. One button; no email/password path.
Step 4 · Rabbit holes

Where could you get lost?

Don't build multi-tenant roles yet. Don't try to cover GitLab/Bitbucket.
Step 5 · No-gos
Enterprise SAML. Email magic links.
Other notes · optional

Extras that don't fit above — links, references, constraints.

See Devise OmniAuth example at github.com/heartcombo/devise#omniauth. Beta is invite-only for now.
Readiness checklist complete
Mark ready →
Phase 2 · start of cycle

Commit.

Pick the pitches. Assign each a short tag. The decision ritual matters even when the only stakeholder is you — don't drift into work.

2

Pick pitches and tag them.

Heliostat lists every pitch you marked ready. Click "Commit" on the ones you'll run this cycle — one XL, or a few Ms and an L, or four Ss. Whatever mix fits the cycle. Each committed pitch needs a scope tag: any short word that'll link future branches and commits back to it.

User Auth

Small · 1–2w
✓ Committed
Scope tag required
auth

Any short word. No required prefix — auth will match branches like feat/auth-oauth, bug/auth, and commits like fix(auth): ….

Threaded Comments

Big · full cycle
Commit to this
Phase 3 · daily, for weeks

Build.

Ship. Every day you move the dot; every push flows into the right scope. Stale scopes flag themselves, interruptions log themselves, and the hill chart keeps you honest.

3

Commits link themselves.

Work the way you already do. A push to feat/auth-oauth matches the tag's branch pattern; a quick fix committed straight to main still matches if the commit message names the tag.

Branch match
feat/auth-oauth
a3f218… feat(auth): sketch provider config ↗ uphill User Auth
a3f924… feat(auth): wire OAuth callback ↗ uphill User Auth
a3f533… fix(auth): handle expired refresh token ↘ downhill User Auth
Scope in the message
fix(auth): redirect loop after deploy
on main
Matched
User Auth
tag: auth

The direction marker comes from the type prefix (feat / spike / explore / wip / poc read uphill; fix / test / refactor / chore / docs read downhill). It's a second opinion for your next check-in — the hill chart doesn't move on its own.

4

Interruptions log themselves.

A pager goes off. You push hotfix: pager timezone bug to main — no scope tag in the branch, no tag in the message. Heliostat doesn't lose the commit; it logs it as unplanned work at 0.5h (estimated) so you don't forget to account for it. Tap the hours to fix them later.

Unplanned Work

Logged via ⚡ · informs next cycle sizing

3.5h
pager timezone bug Apr 14 0.5h
Safari login bug Apr 15 2h
DB migration rollback Apr 16 1h

Dashed border = estimated, still needs your confirmation.

5

Daily check-in: you decide, commits advise.

Every day you move the dot — a small, honest adjustment. Heliostat shows the commits since your last check-in with their direction split so you can calibrate. A second opinion, never a verdict.

User Auth
35 → 55
figuring it out executing
Since last check-in
2 ↗ uphill
1 ↘ downhill

More uphill than downhill — still more figuring-out than executing. Matches the dot at 55: past the crest, not coasting yet.

6

Scope hammer: ~ and cut.

Prefix a scope's title with ~ when it's a nice-to-have. It still shows up and gets worked on — but when the calendar runs out, nice-to-haves are first to cut. Cut manually anytime; the hill chart keeps the trace, and the cut scope comes back as a fresh pitch with problem and solution prepopulated so nothing's lost.

Scopes in this cycle
User Auth auth
Billing portal billing
~ Email notifications nice-to-have
Onboarding tour cut

Cut scopes move back to the pitch list as raw drafts — title, problem, solution, rabbit holes all preserved. Re-pitch next cool-down, re-commit next cycle, or let them go.

Phase 4 · 1 week after cycle

Cool-down.

No feature work. Fix lingering bugs, update dependencies, jot rough ideas for next cycle — and run the retrospective. All on one page. Close cooldown when you're done; only then does a new cycle start.

7

Clean up, then seed the next cycle.

Two panes: a checkable list of small tasks on the left (bugs, docs, tech debt); an idea scratchpad on the right. Promote an idea to a pitch when it's ready — Heliostat drops you back into Pitch with the title and text prefilled.

Clean up

Small tasks — bugs, docs, tech debt.

Fix Safari redirect bug
Update gem versions
Write rate limiter tests
Triage open issues

Ideas

Seeds. Promote to a pitch when ready.

Better onboarding flow — single-step project tracking after sign-in

Offline dashboard support

Public API docs?

8

Three questions. Brief. Honest.

What shipped, what interrupted you, what would you do differently. Interruption % over 15% signals the next cycle should be shorter — or have more buffer. Unfinished scopes hit the circuit breaker: re-pitch and re-commit, or let them go.

Shipped
2
Unfinished
1
Unplanned
7h
Interruption
4%

Q1 · What did you ship?

User Auth Shipped
Billing portal Shipped

Q2 · What interrupted you?

Safari login bug Apr 15 2h
DB migration rollback Apr 16 1h
✓ Well-calibrated
7h of ~160h (4%). Same cycle length is fine.

Q3 · What would you do differently?

Should have cut Onboarding tour earlier — I kept it as nice-to-have for two weeks before letting go. Lesson: if a nice-to-have hasn't moved in a week, cut it rather than drag it.

Carry forward?

Re-evaluate. Cut once = look harder the second time.

Onboarding tour
Left at 28% · Still figuring it out
✓ Carrying
Begin pitching next cycle →
Recap

One cycle. Four phases. Everything else is yours.

  • ◇ Pitch. Five fields, a readiness checklist. Keeps half-finished pitches from getting committed.
  • ◈ Commit. Pick your pitches, tag each one. The tag is the only thing Heliostat needs to wire up automation.
  • ◐ Build. Commits link themselves. Unmatched pushes become unplanned work. You move the dot daily; commits advise direction. ~ marks nice-to-haves; cut whenever you need to.
  • ◑ Cool-down. One page for the whole wind-down: clean up what you skipped, seed next cycle with ideas, and run the retro (Heliostat pre-fills shipped/unfinished/interruption %). Close cooldown to unlock the next cycle.

Everything else — deciding the t-shirt size, moving the dot, cutting scope, writing the retro — stays with you. That's the whole point.

Ready

Try it on your next cycle.

Invite-only beta. Sign up and we'll email an invite when a slot opens.

🍪

Cookies

Heliostat uses a few essential and functional cookies (sign-in, timezone, this notice) and no analytics or ad trackers. Details in our Privacy Policy.

Privacy