Skip to content

πŸƒ New Plugin: Pointing Poker β€” Turn Refinement into a Team Game #10331 - #10331

Open
acierto wants to merge 1 commit into
backstage:mainfrom
acierto:pointing-poker
Open

πŸƒ New Plugin: Pointing Poker β€” Turn Refinement into a Team Game #10331#10331
acierto wants to merge 1 commit into
backstage:mainfrom
acierto:pointing-poker

Conversation

@acierto

@acierto acierto commented Aug 15, 2026

Copy link
Copy Markdown

Hey, I just made a Pull Request!

Summary

This PR introduces Pointing Poker, a complete collaborative story-point estimation experience for Backstage.

It keeps the full refinement loop inside the developer portal: teams select a focused set of issues, discuss each ticket with its tracker context visible, vote privately, reveal together, resolve differences, and write the agreed estimate back to the issue tracker.

The first provider is Jira, while the backend exposes a ticket-provider extension point so the community can add other trackers without coupling them to the core session engine.

30-second walkthrough

Watch the narrated Pointing Poker walkthrough

Overview

The Overview is the starting point: it explains the refinement loop, shows a sample consensus, links directly to session setup, and gives teams a quick view of supported providers and deck configuration.

Pointing Poker overview

Minimal Jira configuration

After registering the frontend plugin, backend plugin, and Jira module, this is all the runtime configuration required to make Pointing Poker work with Jira:

pointingPoker:
  jira:
    host: https://YOUR_COMPANY.atlassian.net
    email: ${JIRA_USER_EMAIL}
    apiToken: ${JIRA_API_TOKEN}

The email and API token are supplied to the Backstage backend through environment variables and are never exposed to the frontend.

Why this belongs in Backstage

Estimation is collaborative developer work, but it is commonly fragmented across an issue tracker, a video call, a separate poker tool, and team notes. Pointing Poker brings that workflow to the same portal where teams already discover ownership and software context.

The plugin gives the community:

  • a practical team-collaboration workflow, not only another catalog visualization;
  • private voting that reduces anchoring and groupthink;
  • issue context beside the table, reducing tab switching and context loss;
  • team discovery and participant identity from the Backstage catalog;
  • configurable refinement queries and voting decks per team;
  • a reusable provider contract for adding non-Jira issue trackers;
  • durable session history for understanding past decisions and improving refinement quality.

User workflow

1. Start from a focused refinement queue

Teams configure JQL and select only the issues that belong in the sessionβ€”the plugin does not require loading the entire backlog.

Select the refinement queue with JQL

2. Keep ticket context beside the table

Descriptions, acceptance criteria, subtasks, attachments, comments, and reporter context remain visible during discussion. Participants can comment or mark work as not ready without leaving the session.

Live refinement session

Each story has a spokesperson on the tribune. The ticket creator presents by default; if they are absent, anyone at the table can click I'll present it and take over.

3. Vote privately and reveal together

Participants choose from a team-configured deck. Estimates remain hidden until everyone has voted, then reveal automatically.

The result view shows the distribution, average, spread, outliers, and discussion prompts. The team can re-vote or accept the agreed value, which the provider writes back to Jira.

Revealed votes and discussion result

4. Revisit decisions

History records completed sessions, story outcomes, and discussion time so teams can review previous estimates and prepare better refinement sessions.

Plugin experience

The frontend includes:

  • an overview and narrated walkthrough;
  • team-aware session creation and lobby discovery;
  • saved JQL, ticket preview, and selective inclusion;
  • participant avatars, host/observer roles, and a presenter tribune;
  • private voting, automatic reveal, consensus analysis, and re-voting;
  • comments, mentions, subtasks, attachments, and not-ready handling;
  • accepted estimate write-back;
  • session history and per-story timing;
  • team settings for JQL, card decks, and avatars.

Architecture

Package Responsibility
@backstage-community/plugin-pointing-poker Frontend page, session experience, settings, and history
@backstage-community/plugin-pointing-poker-backend Session persistence, voting API, lifecycle, and ticket-provider extension point
@backstage-community/plugin-pointing-poker-jira Jira search, issue context, comments, and story-point write-back
@backstage-community/plugin-pointing-poker-common Shared provider contracts and domain types

The backend's pointingPokerTicketProviderExtensionPoint accepts implementations of the shared TicketProvider contract. Jira is delivered as a separate backend module, demonstrating how future Linear, GitHub Issues, Azure DevOps, or other providers can integrate without changing the core plugin.

Validation

  • yarn tsc:full with strict dependency declaration checking
  • Repository pre-commit ESLint and Prettier checks
  • 6 focused unit tests covering vote enrichment, optimistic local votes, unanimous consensus, numeric spread/outliers, and non-numeric cards
  • Manual end-to-end validation against Jira: query β†’ session β†’ spokesperson β†’ voting β†’ reveal β†’ accept/write-back β†’ history
  • Walkthrough verified at 1920Γ—1080 with H.264 video, AAC narration, and WebVTT captions

βœ”οΈ Checklist

  • A changeset describing the change and affected packages.
  • Added or updated documentation.
  • Tests for new functionality and regression-sensitive voting analysis.
  • Screenshots attached for the UI changes.
  • All commits have a Signed-off-by line in the message.

@acierto
acierto requested review from a team and backstage-service as code owners August 15, 2026 20:49
@acierto
acierto requested a review from Parsifal-M August 15, 2026 20:49
@backstage-goalie

backstage-goalie Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Changed Packages

Package Name Package Path Changeset Bump Current Version
app workspaces/pointing-poker/packages/app none v0.0.1
backend workspaces/pointing-poker/packages/backend none v0.0.1
@backstage-community/plugin-pointing-poker-backend workspaces/pointing-poker/plugins/pointing-poker-backend minor v0.1.0
@backstage-community/plugin-pointing-poker-common workspaces/pointing-poker/plugins/pointing-poker-common minor v0.1.0
@backstage-community/plugin-pointing-poker-jira workspaces/pointing-poker/plugins/pointing-poker-jira minor v0.1.0
@backstage-community/plugin-pointing-poker workspaces/pointing-poker/plugins/pointing-poker minor v0.1.0

@acierto
acierto force-pushed the pointing-poker branch 12 times, most recently from 585569f to bf67924 Compare August 16, 2026 06:11
Introduce a complete Pointing Poker workspace for collaborative Jira
refinement sessions in Backstage, including the frontend, backend,
shared contracts, Jira provider, documentation, tests, screenshots,
and narrated walkthrough.

Signed-off-by: bnechyporenko <bnechyporenko@bol.com>
Signed-off-by: Bogdan Nechyporenko <bnechyporenko@bol.com>
@acierto acierto changed the title feat(pointing-poker): add collaborative estimation plugin πŸƒ New Plugin: Pointing Poker β€” Turn Refinement into a Team Game #10331 Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant