CLI reference
briar extract
knowledge:<company> by default and becomes the source of truth other commands splice into agent prompts.Synopsis
$ briar extract --company COMPANY [--include EXTRACTOR ...] [--store {file,postgres}][--blob-name NAME] [--root PATH] [--out-json PATH][--merge-claude-md] [--claude-md-path PATH] [--advanced-help][--repo OWNER/REPO ...] [--since-days N] [--max N] [--top-n N] [--sample N][--authors-allow|--authors-block|--assignees-allow|--assignees-block LOGIN ...][<provider flags>] [<extractor-specific flags>]
Available extractors
Twenty-three scheduled extractors ship today. Each one is independent. If its required credentials are missing, it is skipped (a skipped <name> line goes to stderr) and the rest of the pipeline runs unchanged. If every extractor comes back empty, the command fails with nothing extracted.
Context & activity
active-tickets— open tracker tickets per project (Jira / GitHub Issues / Bitbucket Issues / Linear).active-work— open PRs + recent activity from the configured repo provider.aws-infra— AWS / GCP / Azure inventory: compute, databases, queues, log groups.code-hotspots— files churned most often in the last N days; high-risk surface area.codebase-conventions— language / framework / test-runner / migration-tool detection.github-deployments— recent deployment events from GitHub's deployments API.meeting-digest— Fireflies transcript summaries with attendee filters.pr-archaeology— merged PRs with titles, descriptions, review patterns.reviewer-profile— who reviews what, how fast, what they typically catch.ticket-archaeology— closed tickets with resolutions, useful for context on recurring bugs.
Code quality & engineering health
Thirteen extractors mine git history and the repo-host API for engineering-quality signals. All take --provider github|bitbucket and the shared --repo owner/repo flag (repeatable). See agents/extract.md for the full per-extractor flag reference.
defect-hotspots— files most likely to break, scored by churn × bug-fixes × size.pr-hygiene— PR size distribution, large-PR rate, rubber-stamp rate, time-to-first-review.review-nits— phrases reviewers repeat across PRs; candidates to codify as lint rules.revert-signals— reverts and emergency fixes; fragile areas the test/review net missed.commit-message-quality— conventional-commits adherence and subject-line hygiene.stale-prs— open PRs idle beyond a threshold; the review backlog.ci-health— pass rate, flaky workflows, run-duration trend.dependency-health— open dependency vulnerabilities by severity (Dependabot).code-scanning— open static-analysis findings grouped by rule and file.repo-governance— branch protection + presence of CODEOWNERS / pre-commit / linter config.test-discipline— test-to-source file ratio and source files without an obvious test.release-cadence— how often the repo ships: release frequency and recency.todo-density— count of TODO / FIXME / HACK markers and the files carrying the most.
Cherry-pick with --include
--include, every extractor with valid credentials runs. Pass --include <name> (repeatable) to run only specific extractors.Examples
Full extract for a company
$ briar extract --company acme
Writes knowledge:acme to ./knowledge/knowledge/acme.md. Runs every extractor whose credentials are configured.
Specific extractors with filters
$ briar extract --company acme \--include pr-archaeology \--include reviewer-profile \--repo acme/widgets \--repo acme/api \--max 50 \--authors-block dependabot \--authors-block renovate
The shared flags feed every included extractor that reads that concept. Here --max and --authors-block reach pr-archaeology only, because reviewer-profile has no such knob. The old per-extractor spellings (--pr-repo, --pr-max, ...) still work but print a deprecation note.
Write to Postgres
$ briar extract --company acme --store postgres
Requires BRIAR_DATABASE_URL (or the per-company override). The blob name is unchanged — only the backend differs.
Custom blob name (archive snapshot)
$ briar extract --company acme \--blob-name knowledge:acme.archive-2026q1
Non-AWS cloud
$ briar extract --company acme \--include aws-infra \--cloud gcp \--aws-extract-profile my-gcp-project \--aws-extract-region us-central1
The flag names read AWS-flavoured because the AWS provider shipped first. For GCP --aws-extract-profile carries the project ID; for Azure it carries the subscription ID.
Code-quality signals
$ briar extract --company acme \--include defect-hotspots \--include pr-hygiene \--include ci-health \--include review-nits \--repo acme/widgets
One --repo (repeatable) feeds every included extractor. They read git history plus the repo-host API, with no extra credentials beyond the provider token already in use. To point one extractor at a different repo, use its override flag (for example --risk-repo); see briar extract --advanced-help.
Feed CLAUDE.md — read on demand
$ briar extract --company acme \--include defect-hotspots \--include ci-health \--repo acme/widgets \--merge-claude-md
Writes the full bundle to .briar/knowledge/acme.md and splices a short topic index into CLAUDE.md. Because CLAUDE.md auto-loads into every Claude Code session but the detail file does not, the agent reads the detail only when a task touches one of the listed topics — knowledge on demand, without a per-session context cost.
Non-destructive, re-runnable
The index lives inside a <!-- BEGIN briar-knowledge --> … <!-- END briar-knowledge --> block. Re-running replaces only briar's block and leaves any hand-written CLAUDE.md content untouched. The detail file is written locally even with --store postgres, since the reference resolves from the project root.
Core flags
--company COMPANYrequiredJIRA_{COMPANY}_TOKEN, etc.).--include EXTRACTORactive-ticketsactive-workaws-infraci-healthcode-hotspotscode-scanningcodebase-conventionscommit-message-qualitydefect-hotspotsdependency-healthgithub-deploymentsmeeting-digestpr-archaeologypr-hygienerelease-cadencerepo-governancerevert-signalsreview-nitsreviewer-profilestale-prstest-disciplineticket-archaeologytodo-density--store {file,postgres}default: postgres if BRIAR_DATABASE_URL is set, else filefilepostgresBRIAR_DATABASE_URL. The old spelling --storage is still accepted as a hidden alias.--blob-name NAMEdefault: knowledge:<company>knowledge:acme.archive-2026q1 won't clobber knowledge:acme.--root PATHdefault: ./knowledge--store=file.--out-json PATH--merge-claude-mdCLAUDE.md so Claude Code sessions can read the full detail on demand. Writes the bundle to .briar/knowledge/<company>.md and splices a short, marker-bounded topic index into CLAUDE.md — re-runs replace only briar's block. Off by default.--claude-md-path PATHdefault: ./CLAUDE.mdCLAUDE.md to merge the index into. Only used with --merge-claude-md.--advanced-help-h) and exit.Common extractor options
One shared flag per concept. Each value is passed to every extractor selected with --include that reads that concept. When none of these is given, each extractor uses its own default (listed under the per-extractor sections below).
--repo OWNER/REPOrepos or [repo] in .briar.toml, then from the local git origin remote.--since-days N--max N--top-n N--sample N--authors-allow LOGINpr-archaeology and active-work apply author filters.--authors-block LOGIN--assignees-allow LOGIN--assignees-block LOGIN--assignees-allow. Repeatable.Per-extractor overrides
--pr-repo, --hotspots-top-n, ...) are hidden from -h but still work. An explicit override wins over the shared flag for that one extractor. Using one prints a deprecation note; --ticket-project and --ticket-archaeology-project are the exception and stay fully supported.Provider flags
Pick which provider implementation the extractors talk to.
--provider {github,bitbucket}default: githubgithubbitbucketactive-work, pr-archaeology, reviewer-profile, code-hotspots, codebase-conventions, and all thirteen code-quality extractors.--cloud {aws,gcp,azure}default: awsawsgcpazureaws-infra.--tracker {jira,github-issues,bitbucket-issues,linear}default: jirajiragithub-issuesbitbucket-issueslinearactive-tickets and ticket-archaeology.--meeting {fireflies}default: firefliesfirefliesmeeting-digest.pr-archaeology flags
--pr-repo owner/repo--pr-max Ndefault: 100--pr-authors-allow LOGIN--pr-authors-block LOGINdependabot, renovate).--pr-assignees-allow LOGIN--pr-assignees-block LOGINAWS / cloud flags
--aws-extract-profile PROFILE--aws-extract-region REGIONdefault: us-east-1--aws-extract-service {ecs,lambda,logs,rds,sqs,tagging-inventory}ecslambdalogsrdssqstagging-inventorytagging-inventory walks the Resource Groups Tagging API to enumerate every tagged resource across all services.Account-wide inventory, without prompt bloat
tagging-inventory keeps the knowledge blob small — only per-service counts go in the markdown body, while the full per-resource detail (ARN, type, region, tags) rides in the section's structured data. Persist it with the JSON sidecar (--out-json), or set knowledge.config.inventory: "true" in a runbook to write a byte-stable inventory:<company> companion blob that only changes when the estate drifts. Tagged resources only — untagged need AWS Config / Resource Explorer.
active-work flags
--active-repo owner/repo--active-authors-allow LOGIN--active-authors-block LOGIN--active-assignees-allow LOGIN--active-assignees-block LOGINgithub-deployments + codebase-conventions
--deploy-repo owner/repo--conventions-repo owner/repoTicket flags
--ticket-project PROJECT_KEY--ticket-archaeology-project PROJECT_KEY--ticket-max Ndefault: 100reviewer-profile flags
--reviewer-repo owner/repo--reviewer-pr-sample Ndefault: 20--reviewer-top-n Ndefault: 5code-hotspots flags
--hotspots-repo owner/repo--hotspots-since-days Ndefault: 30--hotspots-max-commits Ndefault: 100--hotspots-top-n Ndefault: 10meeting-digest flags
--meeting-since-days Ndefault: 7--meeting-max Ndefault: 25--meeting-attendee-allow EMAILCode-quality extractor flags
Three code-quality knobs have no shared equivalent and show in -h:
--prhygiene-large-loc Ndefault: 400pr-hygiene: LOC threshold (additions + deletions) for a "large" PR.--gov-branch BRANCHrepo-governance: branch to check protection for. Default: the provider's default branch.--stale-days Ndefault: 14stale-prs: a PR open longer than this many days is stale.Per-extractor overrides and their defaults (each *-repo flag is repeatable and defaults to empty):
| Extractor | Override flags (default) |
|---|---|
defect-hotspots | --risk-repo, --risk-since-days (90), --risk-max-commits (200), --risk-top-n (10) |
pr-hygiene | --prhygiene-repo, --prhygiene-max (100), --prhygiene-diffstat-sample (30) |
review-nits | --nits-repo, --nits-pr-sample (30), --nits-top-n (15) |
revert-signals | --revert-repo, --revert-since-days (90), --revert-max-commits (200) |
commit-message-quality | --msg-repo, --msg-since-days (90), --msg-max-commits (200) |
stale-prs | --stale-repo, --stale-max (100) |
ci-health | --cihealth-repo, --cihealth-limit (100) |
dependency-health | --deps-repo, --deps-max (200) |
code-scanning | --scan-repo, --scan-max (200), --scan-top-n (10) |
repo-governance | --gov-repo |
test-discipline | --testdisc-repo, --testdisc-top-n (10) |
release-cadence | --release-repo, --release-max (100) |
todo-density | --todo-repo, --todo-max (200), --todo-top-n (10) |
See also
- briar runbook — declarative form of
briar extractvia a YAML schedule. - briar secrets doctor — audit which extractors have valid credentials for a given company.
- Plugin registries — full list of providers, trackers, clouds, and AWS service gatherers.