Team Practices & Adoption

This content was generated with the assistance of AI and should be verified against the official documentation of each tool and framework before being relied on in production.

This section’s bibliography lists the reference material consulted while preparing these pages.

This page checks GitHub Copilot’s policy, usage-metrics and responsible-use docs at https://docs.github.com/en/copilot and DORA’s research at https://dora.dev/, both as of 2026-09-28. It is written from this repository’s own practice of pairing with GitHub Copilot (VS Code, JetBrains, github.com) and Claude Code (CLI, IDE extensions, desktop, web) on the same DocsAssistant API Spring Boot + Python sample used throughout this sub-section, whose controller lives at src/main/java/com/example/docsassistant/DocsController.java.

The golden rules

These rules apply regardless of which tool produced the change, and every other page in this sub-section assumes them:

  • Never merge code you don’t understand. If you can’t explain what a line does and why, don’t approve it — ask the assistant to explain it first, or rewrite it yourself. This is the standing rule behind Reviewing AI-Generated Code's checklist.

  • You own the diff, not the assistant. Authorship in version control, in a review, and in an incident is always a person’s, never a tool’s — the commit-trailer convention below records who assisted, not who is accountable.

  • Verify before you trust. An assistant can name an API, a flag or a package that doesn’t exist (a hallucination) or one that used to exist and no longer does. Check it against the official docs the same way the examples on this sub-section’s pages do, before it ships.

  • Treat suggestions as a first draft from a fast, well-read, context-blind collaborator. It has read more code than any one person could, but none of the context that isn’t in the repository, the prompt, or a linked tool result.

  • Keep deterministic gates in the loop. Tests, linters, static analysis and CI stay the backstop for every change, AI-assisted or not — see the "deterministic gates" section of Reviewing AI-Generated Code.

  • Small, reviewable steps beat one large agentic run. A change you can review in one pass is a change you can actually verify; this is also why Plan-First Workflows' explore-plan-implement loop exists.

AI-assisted commit conventions

When an AI assistant materially helped write a commit, this repository records that with a Co-Authored-By trailer in the commit message, the same convention GitHub uses to credit multiple human authors. It is a line of the form Co-Authored-By: <name> <email>, placed on its own line, normally at the end of the commit message body:

Add GET /api/pages/{id} endpoint to DocsController

Returns the page as a PageDto via PageRepository.findById, or a 404
with a JSON ProblemDetail body when the id doesn't exist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

This repository’s own history carries exactly this shape — for example the merge commit that added the sibling LLM Foundations & Prompting sub-section ends its message with a Co-Authored-By trailer naming the Claude model that helped write it. git log on any branch of this repository shows the pattern in practice:

$ git log --format='%H %s%n%b' -1 95e1aa5c

A trailer records assistance, not a disclaimer of review: it sits alongside the human author’s own name, which is what makes the golden rule above ("you own the diff") checkable later — git blame and git log --author still resolve to the person who reviewed and merged the change. GitHub’s own commit guidance documents the trailer format itself — one Co-authored-by: name <name@example.com> line per co-author at the end of the commit message (git matches trailer keys case-insensitively, so Co-Authored-By works the same) — at Creating a commit with multiple authors or on behalf of an organization.

Shared prompt and skill libraries

Re-deriving the same prompt, instruction file or agent workflow on every project wastes the exact context an assistant needs most. This account’s own catalog of reusable Claude Code skills, agents and prompt guides — covering the issue-to-plan-to-code-to-PR-to-release flow, docs updates and more — is published as AI Catalog, and is the concrete example of what a shared library looks like once a team has one: named, versioned, documented workflows that any repository (including this one) can install and invoke by name, instead of every author reconstructing the same prompt from memory. Authoring that kind of library — writing instruction files, prompt files, skills, agents, hooks and plugins yourself — is out of scope on this page and belongs to Customizing AI Workflows; here the point is narrower: once a library exists, point new team members and new prompts at it before writing from scratch.

Onboarding

Bringing a new team member up to speed on AI-assisted work is largely the same problem as bringing them up to speed on the codebase, with three additions specific to the tools:

  • Walk through the golden rules above and the review checklist on Reviewing AI-Generated Code before their first AI-assisted PR, not after a problem in one.

  • Point them at this sub-section’s getting-started pages (Copilot and Claude Code) and at AI Catalog for the team’s existing shared workflows, instead of letting them discover both by trial and error.

  • Pair on one real, small task in each tool (adding an endpoint, fixing a failing test) before they run an agent unsupervised — the same DocsAssistant API examples used across this sub-section are a reasonable first exercise.

Measuring impact

Two families of numbers are useful once a team has enough AI-assisted history to compare against: an acceptance rate (how often a suggestion or an agent’s proposed diff is kept, not overwritten or reverted) and a cycle time (how long a task takes from start to merge). Both are metrics to instrument and watch trend over time on your own team’s data — this page does not give target numbers, because a credible acceptance rate or cycle-time figure depends entirely on the team, the codebase and the task mix it was measured on, and a number quoted out of that context is not transferable.

Cycle time overlaps with the wider DORA metrics research program (https://dora.dev/), which studies the capabilities that drive software delivery and operations performance across the industry — change lead time, deployment frequency, and failure/recovery measures among them. DORA’s own findings are the reference point for why cycle time matters (faster, safer delivery correlates with these capabilities), not a source of numbers to copy; read the current metrics on https://dora.dev/ rather than treating any fixed list as permanent, since the research program itself has evolved which metrics it reports.

Beware vanity metrics: "lines of code generated" or "suggestions shown" say nothing about whether the code was correct, reviewed, or ever merged, and can rise even as delivery gets slower if they encourage keeping every accepted-then-reverted suggestion. A metric is only useful if it is measured alongside outcome, not volume — pair an acceptance-rate or cycle-time number with defect rate, review turnaround, or one of the DORA measures above before drawing a conclusion from it.

GitHub Copilot ships its own usage-metrics dashboards and a REST API covering adoption, engagement, acceptance rate, lines of code, and pull-request lifecycle data at the enterprise, organization, repository and user levels (GitHub Copilot usage metrics); the REST endpoints themselves are documented at REST API endpoints for Copilot usage metrics. Claude Code’s own cost and usage visibility is covered, links only, on Managing Context.

Policies, IP and licensing

Org-level policies control which Copilot features, models and agents are available to a team and are managed from organization or enterprise settings, documented at GitHub Copilot policies for enterprises and organizations; the equivalent Claude Code controls are managed settings, which an organization deploys to every developer’s machine and which Claude Code applies above user, project and local settings, so they can pin permission and sandbox defaults a developer cannot override — documented at Claude Code — Deploy managed settings. The permission modes and sandboxing those settings pin are covered on Securing AI-Assisted Development.

IP and licensing risk from AI-generated code centers on two questions: did a suggestion reproduce someone else’s licensed code, and is the origin of a given change disclosed. GitHub Copilot’s public code filter (also called duplication detection) checks completions against public code on GitHub and, in Block mode, suppresses a suggestion that matches or nearly matches it; in Allow mode it instead shows the matching public repositories so a reviewer can check the license before keeping the suggestion — Finding public code that matches GitHub Copilot suggestions. Attribution — the Co-Authored-By trailer above, plus whatever your own team or organization policy requires in a PR description — is what makes an AI-assisted change traceable later, the same way a human co-author’s name is.

Ethics

Responsible use of an AI coding assistant is narrower here than the general responsible-AI literature, but two points are specific to day-to-day development: don’t let an assistant’s confident tone substitute for the verification the golden rules above require, and don’t feed it data it isn’t cleared to see — content exclusion and training opt-outs (named, links only, on Securing AI-Assisted Development) exist for exactly that reason. GitHub’s own responsible-use documentation for each Copilot surface — Responsible use of GitHub Copilot features — is the authoritative source for what a given feature is and isn’t intended to do; the AI Security & Responsible AI sub-section goes into this in more depth; see Responsible AI Practices.

Advice by seniority

  • Junior engineers get the most value from an assistant explaining unfamiliar code and generating a first draft of tests or boilerplate, and are also the most exposed to the "never merge code you don’t understand" rule — resist the pull to ship a suggestion you can’t yet explain, and use the assistant to close that gap (ask it why, not just for the fix) rather than to skip it.

  • Mid-level engineers typically get the largest net productivity gain: enough judgment to spot a wrong suggestion quickly, and enough unfamiliar-territory work (a new module, an unfamiliar framework) that fast, well-read completions genuinely save time. The main risk at this level is over-trusting an assistant in the one corner of the codebase they know least.

  • Senior engineers and reviewers carry the review-checklist and architecture-decision load — Reviewing AI-Generated Code's checklist is written for them — and are usually the ones who set up the shared prompt/skill library and the team’s policies above, since both require knowing which parts of the codebase are safe to hand an agent unsupervised and which are not.