Skip to main content

Paid Work project board

One GitHub Project across all client repos, so there's a single place to see what's active, blocked and due. Designed but not built yet.

Scope

Paid client work only. Volunteer work stays out, otherwise the board stops being an honest picture of what I'm being paid to do.

One repo per client, and every client repo gets added to the same project.

Status options

Replace the default set with:

StatusMeansAppears in
To doQueued and ready to pick upTo do
In progressActively being worked onNow
BlockedStuck on something that isn't the client, a dependency, a decision, a third partyBlocked
Waiting on clientStuck on the client specificallyBlocked
DoneFinishednone

No Inbox or Triage. Those exist to sift unscoped incoming requests, and since I create nearly all the tasks myself there's no unsorted pile to sift. Work arrives already scoped, so it goes straight to To do.

Blocked and Waiting on client are split deliberately. They need different actions from me, one is chasing a third party or a decision, the other is chasing the client.

Fields

FieldWhy
StatusAs above
PriorityWhat sorts the To do view
Due dateAlso sorts the To do view
Up next (checkbox)Marks the single next task per client

Deliberately not included:

FieldWhy notAdd it if
ClientOne repo per client, so the repo name already identifies the clientA client ever spans two repos
RepoProjects already knows the source repo and groups by it nativelyNever, it's duplicate data
Billing statusThat's the invoicing tool's job, not a task board'sNever
Effort / SizeI don't estimate sizes todayI start estimating

Eight fields per issue is the kind of upkeep that quietly stops happening after a fortnight. Four is maintainable.

Delivery dates use GitHub's native per-repo milestones rather than a custom field.

Views

ViewFilter
NowStatus is In progress
To doStatus is To do, sorted by Priority then Due date
BlockedStatus is Blocked or Waiting on client
By clientGrouped by repo, no status filter

There's no separate Next view. With a single To do status, filtering for "next" just returns the whole backlog. Sorting the To do view by Priority then Due date gives the same effect without a fake extra status.

The Up next flag

GitHub can't filter to "the top card in each group", so seeing one next task per client needs a flag.

Tick Up next on whichever task sits at the top of each client's queue, then build a view filtered to Up next = true. One row per client.

Cost is one extra click each time a task finishes and the next gets promoted. Start manual. Only automate if that click genuinely becomes annoying.

One board for status, not many

Don't run a second board for day-to-day status. An item's field values and drag order are per-board and don't sync, so the same issue tracked on two boards means maintaining both and trusting neither.

There is still a per-project board, created by the github-project-backlog skill at kickoff, but it has a different job: scoping, phases, and a client-facing roadmap. This board owns Status, Priority and Up next. The project board owns Phase and Target date. Keep that split and they don't fight.

Building it

Views can't be created through the API, so this board can't be scripted from scratch either. Same answer as the project template: build it once by hand, gh project mark-template it, and copy it if it ever needs rebuilding. Fields can be scripted with gh project field-create.

Later, maybe

Automating the Up next tick is possible but it's a real build, not a setting. GitHub Projects' built-in workflows can't compare items or look across a queue. It'd be a GitHub Action firing on Status changing to Done, using GraphQL to find the top remaining To do item for that client and tick it.

Catch: it would have to sort on Priority and Due date, because the manual drag order of cards isn't readily queryable. So the automation's idea of "next" and my card order could drift apart unless Priority is kept accurate.

Not worth building until the manual version has proven annoying.