Skip to content

Add plugin entry: linear - #100

Open
vburojevic wants to merge 2 commits into
get-bb:mainfrom
vburojevic:submit-linear
Open

Add plugin entry: linear#100
vburojevic wants to merge 2 commits into
get-bb:mainfrom
vburojevic:submit-linear

Conversation

@vburojevic

Copy link
Copy Markdown
Contributor

What the plugin does

Linear inside bb: a list-first issue browser in the nav panel (state groups, filters, full-text search, keyboard navigation, inbox with badge, two-field create dialog) served from a local SQLite mirror; a deterministic ladder that resolves which Linear issue each bb thread is working on (explicit link > Linear branch name > issue key in conversation > fuzzy suggestion that asks, never binds), shown live in the thread header and side panel and injected into agent instructions; thirteen linear_* agent tools plus a bb linear CLI, identical across providers.

Source release

  • https://github.com/vburojevic/bb-plugin-linear.git, range ^0.1.2 (annotated tag v0.1.2, public)
  • Installs from source: bb clones, installs dependencies, builds on the user's machine — nothing pre-built ships in the repo

Plugin checks

  • tsc --noEmit clean, 742 tests passing (vitest), bb plugin build succeeds
  • A machine-local pre-push hook runs the same gate on every push

Marketplace checks

  • npm run build and npm run check both pass (64 entries)
  • Icon vendored as icons/linear-6ff21144.svg (sha256-prefixed, shape-only SVG, no scripts or remote resources)

Security facts for reviewers

  • Credential: a personal Linear API key per workspace, stored in bb's secret store, redacted from every error, log line, tool result and rpc payload at construction
  • One consent switch ("Allow changes to Linear") gates every mutation at the single transport door; refusals name the switch
  • Every GraphQL document is validated offline against a vendored SDL by the test suite; rate-limit headers are honored with a budget
  • Webhooks are optional: registered only after a signed self-test, demoted back to polling on delivery failure

🤖 Generated with Claude Code

@SawyerHood

Copy link
Copy Markdown
Contributor

Automated note from a Claude Code agent, posted on behalf of the marketplace maintainer.

Thank you for the Linear integration. We are rejecting this version for now because it cannot activate on the current BB SDK.

  • SDK 0.4.16 rejects experimental_statusLabels on linear_team_context during startup.
  • The exact install finishes, but the plugin enters an error state before it registers its full surface.

Please replace the old field with presentation.labels and publish a new matching tag. We found no other blocking issue in the network or secret handling.

@SawyerHood SawyerHood left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated note from a Claude Code agent, posted on behalf of the marketplace maintainer.

We are requesting changes for the reasons in the automated review comment above. Please reply after a new matching release is available.

@SawyerHood SawyerHood added the blocked Waiting on plugin author changes before it can be listed label Aug 24, 2026
0.1.2 could not activate on SDK 0.4.16, which rejects
`experimental_statusLabels` at tool registration. 0.1.3 registers under
`presentation.label` instead. Raising the floor so the version that
cannot start is no longer resolvable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vburojevic

Copy link
Copy Markdown
Contributor Author

Fixed in v0.1.3 — tagged and pushed. The entry now requires ^0.1.3, so the build that could not start is no longer resolvable.

All ten tools moved off experimental_statusLabels.

One correction worth flagging: the note asked for presentation.labels, but SDK 0.4.16 reads presentation.label (singular). Since parsePluginAgentToolPresentation drops keys it does not recognise, the plural spelling does not throw — it activates cleanly and silently discards every label:

experimental_statusLabels  -> throws (the reported failure)
presentation.labels        -> {}                        label kept? false
presentation.label         -> { label: { pending, … } } label kept? true

So the literal instruction would have cleared the activation error while quietly removing the feature it was meant to preserve. v0.1.3 ships presentation: { label: { pending, completed } }, verified against @get-bb/plugin-sdk@0.4.17's own internal/host-policy.

Also in this release:

  • Vendored SDK type declarations refreshed to 0.4.17.
  • engines.bbPluginSdk raised to ^0.4.16, since presentation does not exist below it.
  • Added test/sdk-host-policy.test.ts, which runs every registration through the SDK's real host policy — the same code that runs at startup — and asserts each label survives parsing. A stale or misspelled field now fails the suite instead of a marketplace review. Suite is 749 passing, typecheck clean.

experimental_threadHeaderAction was left as-is; it is still current in 0.4.17.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked Waiting on plugin author changes before it can be listed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants