AI coding sessions are ephemeral and individual. The context a developer builds up over an hour — what was tried, what got rejected and why, which team standards applied — disappears when the session closes, and the next person starts cold. OpenTeamCode makes that state durable, shareable, and governed for Python teams working on Azure DevOps.
It adds three things on top of an existing coding agent: session handoff artifacts that another developer can resume from, standards injected into every session so conventions survive contact with a model that has never read the team's style guide, and a guardrail scanner that runs before content leaves the machine.
OpenTeamCode is packages/otc (the CLI) and packages/otc-plugin (the OpenCode plugin),
plus the validation harness in validation/. OpenCode
is the foundation it extends and is vendored as a git submodule at ./opencode/ — that code
is not mine. Clone with --recurse-submodules if you want the full tree.
Four hypotheses, each with a pass threshold set before the experiment ran. Two have reported; two have tooling in place and no data yet.
| Experiment | Threshold | Result |
|---|---|---|
| Q002 — standards injection | >80% compliance | PASS — 100% across 20 tasks |
| Q003 — guardrails | <5% false positives | PASS — 3.6% FPR at 90% TPR, 75 files |
| Q001 — session continuation | >70% productive | tooling complete, 0 of 25 scenarios run |
| Q004 — team discipline | sustained weekly maintenance | tooling complete, week 0 of 4 |
Q003 is the one worth arguing about. A secret scanner that flags too much gets disabled by the team in a week, so the false-positive rate was the binding constraint and true-positive rate was allowed to give ground — 90% TPR means one real secret in ten walks past the scanner. That tradeoff is defensible only because the guardrail is one layer, not the only one. If it were the last line of defense the thresholds should be inverted.
Full experiment tracking is in project_docs/phase0-validation.md;
architecture decisions are in project_docs/decisions.md.
git clone --recurse-submodules https://github.com/KenStager/OpenTeamCode.git
cd OpenTeamCode/packages/otc
npm install
npm run otc -- --help
npm run otc -- init # create the .ai/ folder from templates
npm run otc -- doctor # 11 health checks, each with a remediation hint
npm run otc -- status # config validity, session inventory, OpenCode state| Command | What it does |
|---|---|
otc init |
Create the .ai/ folder and config from templates |
otc status |
Show config validity, session artifacts, OpenCode status |
otc doctor |
Run 11 health checks with remediation guidance |
otc guardrail scan [path] |
Scan files for secrets before they leave the machine |
otc guardrail list |
Show active detection patterns |
otc guardrail explain <id> |
Explain what a pattern matches and why |
otc handoff |
Export the current session to .ai/sessions/ |
otc sessions list | show | search |
Browse and search session artifacts |
otc continue <id> |
Resume a handed-off session |
otc pr summarize <id> |
Summarize an Azure DevOps pull request |
otc pr review <id> |
Review an Azure DevOps pull request |
The pr commands call out to Azure DevOps and Anthropic, so they need credentials:
export ADO_PAT="..." # Azure DevOps personal access token
export ANTHROPIC_API_KEY="..."
npm run otc -- pr summarize 1234 --dry-run # no API calls, prints the planOrganization and project come from .ai/config.yaml, or are auto-detected from the git
remote in an ADO-hosted repo:
ado:
organization: your-org
project: your-projectpackages/otc/ the otc CLI (commands, guardrails, ADO client, LLM adapter)
packages/otc-plugin/ OpenCode plugin exposing team features inside a session
validation/ Q001-Q004 experiment corpora and harnesses
project_docs/ PRD, feasibility assessment, ADRs, validation tracker
opencode/ submodule — upstream OpenCode, not this project's code