Skip to content

Publishing Guide

This monorepo publishes agent-detective (operator CLI) and @agent-detective/* workspace packages to npm using release-please and Conventional Commits.

Packagenpm nameRole
Root appagent-detectiveOperator CLI (npm i -g agent-detective)
packages/types@agent-detective/typesHost-internal types (re-exported via SDK)
packages/sdk@agent-detective/sdkPlugin-author SDK
packages/observability@agent-detective/observabilityLogging, metrics, health
packages/process-utils@agent-detective/process-utilsProcess helpers
packages/local-repos-plugin@agent-detective/local-repos-pluginLocal repos plugin
packages/jira-adapter@agent-detective/jira-adapterJira adapter
packages/linear-adapter@agent-detective/linear-adapterLinear adapter
packages/pr-pipeline@agent-detective/pr-pipelinePR pipeline plugin

Apps under apps/* are private and are not published.

All publishable packages share one linked version (see release-please-config.json).

  1. npm account with publish access to agent-detective and @agent-detective/*
  2. 2FA on npm (recommended)
  3. npm Trusted Publishing (OIDC) configured for this GitHub repo (see .github/workflows/release-please.ymlid-token: write, --provenance)
  4. Commits on main follow Conventional Commits (husky + commitlint)
  1. Merge feature PRs to main using Conventional Commit messages, for example:
    • feat(jira): add OAuth refresh retry
    • fix(cli): init refuses invalid agent id
    • chore: update turbo
  2. release-please opens or updates a Release PR (chore: release X.Y.Z) with version bumps, changelogs, and lockfile updates.
  3. Merge the Release PR when ready to ship.
  4. On merge, .github/workflows/release-please.yml:
    • Creates the GitHub Release + tag
    • Runs lint, typecheck, test, build
    • Runs pnpm publish -r --access public --provenance

Manual trigger: Actions → release-please → Run workflow (same publish path when a release is created).

FilePurpose
release-please-config.jsonRelease types, linked-versions group, node-workspace plugin
.release-please-manifest.jsonCurrent version per package path
commitlint.config.jsConventional Commit rules
.husky/commit-msgRuns commitlint on each commit

src/version.ts includes an // x-release-please-version marker so the root CLI version stays in sync.

Terminal window
pnpm run lint
pnpm run typecheck
pnpm test
pnpm run build && pnpm run build:app
npm pack # optional: inspect tarball at repo root

Wiring a published package into a running app is covered in extending-with-plugins.md.

Terminal window
npm install @agent-detective/sdk
# or
pnpm add @agent-detective/sdk

Inside the monorepo, dependencies use workspace:*. On publish, pnpm replaces those with concrete semver versions.

  • Confirm Trusted Publishers on npm match this repo and workflow.
  • First publish of scope @agent-detective/* may require access: public (already set via publishConfig).
  • Check the workflow log for pnpm publish errors (missing dist/, auth, or duplicate version).
  • Commits since the last release must use Conventional Commit types (feat, fix, chore, …) that release-please recognizes.
  • Check the release-please Action log on main.

Use messages like type(scope): subject — e.g. docs: fix installation link.

End users install npm i -g agent-detective. See installation.mdx and releasing.md.