Workflows
CI runs on CircleCI with two separate config files, each defining one workflow:| Config file | Workflow | Trigger | Purpose |
|---|---|---|---|
.circleci/config.yml | ci | Every push | Lint, typecheck, test (PRs); plus changesets and tag-release (main) |
.circleci/release.yml | release | Tag push | Per-package publish to npm |
CI workflow
Theci workflow has two jobs that run on different branches:
check (PR branches)
Runs on every push to branches except main. Executes bun run check (lint + typecheck + build + test). No notifications — PR failures are visible in GitHub.
main-pipeline (main only)
Runs on pushes to main only. Executes three steps sequentially in a single job:
- Check —
bun run check(same as PR) - Changesets —
bun scripts/ci-changesets.ts(consume changesets, open/update version PR) - Tag Release —
bun scripts/ci-tag-release.ts(create version tags for unpublished packages)
Release workflow
Triggered by tag pushes matching@agent-facets/*@<version> or agent-facets@<version>. Runs bun scripts/ci-release.ts, which parses the tag and runs the appropriate publish pipeline. See Release Pipeline for details.
Sends notifications on both failure and success.
Contexts
CircleCI contexts provide environment variables to jobs:| Context | Variables | Used by |
|---|---|---|
turbo-cache | Turborepo remote cache credentials | check, main-pipeline, release |
release | npm OIDC config, GitHub app credentials | main-pipeline, release |
slack-secrets | Notification webhook credentials | main-pipeline, release |
Config source structure
CircleCI configs are authored as modular YAML files under source directories, then packed into single files for CircleCI to consume:release-src/commands/ are symlinks to src/commands/ to avoid duplication.