
{"id":93542,"date":"2026-02-02T09:00:00","date_gmt":"2026-02-02T17:00:00","guid":{"rendered":"https:\/\/github.blog\/?p=93542"},"modified":"2026-04-21T11:58:52","modified_gmt":"2026-04-21T18:58:52","slug":"how-to-maximize-github-copilots-agentic-capabilities","status":"publish","type":"post","link":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/","title":{"rendered":"How to maximize GitHub Copilot&#8217;s agentic capabilities"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>Modern engineering work rarely lives in a single file. Real systems evolve across years of incrementally layered decisions&mdash;some good, some accidental. A single feature request (&ldquo;Add tagging to notes,&rdquo; &ldquo;Refactor the validation layer,&rdquo; &ldquo;Support a new consumer on our API&rdquo;) often touches controllers, domain models, repositories, migrations, tests, documentation, and deployment strategy.<\/p>\n\n\n\n<p>Copilot&rsquo;s agentic capabilities don&rsquo;t replace your judgment in these situations&mdash;they amplify it. When used well, Copilot becomes a partner in system design, refactoring, modernization, and multi-file coordination.<\/p>\n\n\n\n<p>This guide focuses on architecture-aware, multi-step workflows used every day by staff engineers, but written to be accessible for earlier-career engineers who want to understand <em>how<\/em> senior engineers think&mdash;and how Copilot can accelerate their own growth.<\/p>\n\n\n\n<p>It draws on four <a href=\"https:\/\/learn.github.com\/skills\">GitHub Skills exercises<\/a> (linked below), and builds toward a complete, real-world scenario: extending a small modular Notes Service with a tagging subsystem, refactoring a validation layer, designing a safe migration, and modernizing tests.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-before-you-start\">Before you start<\/h2>\n\n\n\n<p>You&rsquo;ll get the most out of this guide if you have:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub Copilot with agent mode enabled<\/li>\n\n\n\n<li>Some familiarity with service-layer architectures (Node, Python, Go&mdash;language doesn&rsquo;t matter<\/li>\n\n\n\n<li>Copy a GitHub Skills exercise template to your handle or organization (use the green &ldquo;Copy Exercise&rdquo; button)<\/li>\n\n\n\n<li>A willingness to let Copilot propose solutions&mdash;and the judgment to inspect and challenge them<\/li>\n<\/ul>\n\n\n\n<p>If you&rsquo;re earlier in your career, don&rsquo;t worry. Each section explains <strong>why<\/strong> these patterns matter and how to practice them safely.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<aside data-color-mode=\"light\" data-dark-theme=\"dark\" data-light-theme=\"light_dimmed\" class=\"wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--2\" style=\"border-top-width:4px\">\n<h2 class=\"wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5\" id=\"h-learn-interactively-at-your-own-pace-with-github-skills\" style=\"margin-top:0\">Learn interactively at your own pace with GitHub Skills<\/h2>\n\n\n\n<p>The following free modules map directly to the workflows in this guide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/skills\/expand-your-team-with-copilot\"><strong>Expand your team with Copilot<\/strong><\/a>: multi-step agentic execution<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/skills\/build-applications-w-copilot-agent-mode\"><strong>Build applications with Copilot (agent mode)<\/strong><\/a>: task-driven code generation<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/skills\/modernize-your-legacy-code-with-github-copilot\"><strong>Modernize your legacy codebases with Copilot<\/strong><\/a>: refactoring and migrations<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/skills\/customize-your-github-copilot-experience\"><strong>Customize Your GitHub Copilot experience<\/strong><\/a>: Customize GitHub Copilot&rsquo;s behavior with custom instructions, prompts, and custom agents for your specific development workflows<\/li>\n<\/ul>\n\n\n\n<p>Each one is designed to be forkable, inspectable, and safe for experimentation. You can also explore all our GitHub Skills courses below.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/learn.github.com\/skills\">Explore GitHub Skills &gt;<\/a><\/p>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"using-copilot-for-system-design-and-decomposition-not-just-scaffolding\">Using Copilot for system design and decomposition (not just scaffolding)<\/h2>\n\n\n\n<p>Senior engineers rarely begin by writing code. They begin by identifying boundaries: domain logic, data access, interfaces, and how modules should interact.<\/p>\n\n\n\n<p>Copilot agent mode can help by revealing structural issues and proposing architectures.<\/p>\n\n\n\n<p><strong>Prompt:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Analyze this service and propose a modular decomposition with domain, infrastructure, and interface layers.\n\nIdentify anti-patterns, coupling issues, and potential failure points.<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Analyze this service and propose a modular decomposition with domain, infrastructure, and interface layers.\n\nIdentify anti-patterns, coupling issues, and potential failure points.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>You&rsquo;ll typically get back:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Proposed module boundaries<\/li>\n\n\n\n<li>Cross-layer coupling concerns<\/li>\n\n\n\n<li>Async\/transaction pitfalls<\/li>\n\n\n\n<li>Duplication or tight weaving of responsibilities<\/li>\n\n\n\n<li>Testability and observability implications<\/li>\n<\/ul>\n\n\n\n<p>This transforms Copilot from an autocomplete tool into a design reviewer.<\/p>\n\n\n\n<p>You can push further by asking it to compare architectures:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Compare hexagonal architecture vs. layered architecture for this codebase.\n\nRecommend one based on the constraints here. Include tradeoffs.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Compare%20hexagonal%20architecture%20vs.%20layered%20architecture%20for%20this%20codebase.%0A%0ARecommend%20one%20based%20on%20the%20constraints%20here.%20Include%20tradeoffs.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Compare hexagonal architecture vs. layered architecture for this codebase.\n\nRecommend one based on the constraints here. Include tradeoffs.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>Want to try it yourself? Use these proposals as starting points.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"building-a-modular-service-using-agentic-workflows\">Building a modular service using agentic workflows<\/h2>\n\n\n\n<p>Once boundaries are defined, Copilot can coordinate changes across modules.<\/p>\n\n\n\n<p><strong>Prompt<\/strong>:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Implement the domain, controller, and repository layers as distinct modules.\n\nUse dependency inversion to reduce coupling.\n\nDocument assumptions and contracts for each module.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Implement%20the%20domain%2C%20controller%2C%20and%20repository%20layers%20as%20distinct%20modules.%0A%0AUse%20dependency%20inversion%20to%20reduce%20coupling.%0A%0ADocument%20assumptions%20and%20contracts%20for%20each%20module.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Implement the domain, controller, and repository layers as distinct modules.\n\nUse dependency inversion to reduce coupling.\n\nDocument assumptions and contracts for each module.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>Copilot will typically generate:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Domain model interfaces<\/li>\n\n\n\n<li>Repository abstractions<\/li>\n\n\n\n<li>Controller logic calling domain services<\/li>\n\n\n\n<li>A short Markdown summary describing each module<\/li>\n<\/ul>\n\n\n\n<p>For earlier-career engineers, this provides exposure to real engineering patterns. For senior engineers, it provides leverage and reduces boilerplate overhead.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"feature-work-with-architectural-awareness-example-tagging-subsystem\">Feature work with architectural awareness (example: tagging subsystem)<\/h2>\n\n\n\n<p>Adding a tagging subsystem is a deceptively simple request with meaningful architectural implications.<\/p>\n\n\n\n<p>Even this single feature forces decisions across the system:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data modeling: <\/strong>embedded tags vs. normalized tables vs. many-to-many relationships<\/li>\n\n\n\n<li><strong>Search behavior: <\/strong>how tags affect indexing, filtering, and relevance<\/li>\n\n\n\n<li><strong>API contracts: <\/strong>whether tags are first-class resources or an implementation detail<\/li>\n\n\n\n<li><strong>Validation boundaries: <\/strong>where constraints and invariants are enforced<\/li>\n\n\n\n<li><strong>Migration and rollout: <\/strong>additive vs. breaking changes and rollback strategy<\/li>\n<\/ul>\n\n\n\n<p>Before touching code, ask Copilot to map the impact.<\/p>\n\n\n\n<p><strong>Prompt<\/strong>:&nbsp;<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Propose the architectural changes required to add a tagging subsystem.\n\nIdentify migration needs, cross-cutting concerns, caching or indexing implications, and potential regressions.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Propose%20the%20architectural%20changes%20required%20to%20add%20a%20tagging%20subsystem.%0A%0AIdentify%20migration%20needs%2C%20cross-cutting%20concerns%2C%20caching%20or%20indexing%20implications%2C%20and%20potential%20regressions.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Propose the architectural changes required to add a tagging subsystem.\n\nIdentify migration needs, cross-cutting concerns, caching or indexing implications, and potential regressions.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>Copilot may identify:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag&ndash;note relationships (one-to-many or many-to-many)<\/li>\n\n\n\n<li>Migration strategy<\/li>\n\n\n\n<li>Impact to search logic<\/li>\n\n\n\n<li>Required test updates<\/li>\n\n\n\n<li>Changes in validation logic<\/li>\n\n\n\n<li>Implications on external API consumers<\/li>\n<\/ul>\n\n\n\n<p>This is the staff-level lens that Copilot can help junior developers adopt.<\/p>\n\n\n\n<p><strong>Then implement it:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Implement the tagging domain model, schema changes, repository updates, and controller logic.\n\nUpdate tests and documentation. Show each change as a diff.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Implement%20the%20tagging%20domain%20model%2C%20schema%20changes%2C%20repository%20updates%2C%20and%20controller%20logic.%0A%0AUpdate%20tests%20and%20documentation.%20Show%20each%20change%20as%20a%20diff.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Implement the tagging domain model, schema changes, repository updates, and controller logic.\n\nUpdate tests and documentation. Show each change as a diff.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>Example output (simplified)<\/p>\n\n\n\n<p><strong>Migration example:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>ALTER TABLE notes ADD COLUMN tags TEXT DEFAULT '[]';<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"ALTER TABLE notes ADD COLUMN tags TEXT DEFAULT '[]';\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p><strong>Domain model example:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>export interface Tag {\n  id: string;\n  label: string;\n}\n\nexport interface Note {\n  id: string;\n  title: string;\n  body: string;\n  tags: Tag[];\n}<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"export interface Tag {\n  id: string;\n  label: string;\n}\n\nexport interface Note {\n  id: string;\n  title: string;\n  body: string;\n  tags: Tag[];\n}\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p><strong>Controller update (partial):<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>await noteService.addTag(noteId, { label: req.body.label });<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"await noteService.addTag(noteId, { label: req.body.label });\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>This is where agent mode shines: coordinating multiple files with consistent intent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"schema-migrations-and-safe-rollout-strategies\">Schema migrations and safe rollout strategies<\/h2>\n\n\n\n<p>At senior levels, the hardest part isn&rsquo;t writing SQL. It&rsquo;s designing a change that is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Backward compatible<\/li>\n\n\n\n<li>Reversible<\/li>\n\n\n\n<li>Safe under load<\/li>\n\n\n\n<li>Transparent to dependent systems<\/li>\n<\/ul>\n\n\n\n<p>Ask Copilot to reason about this:<\/p>\n\n\n\n<p><strong>Prompt:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Generate an additive, backward-compatible schema migration to support the tagging subsystem.\n\nDescribe the rollback plan, compatibility window, and expected impact to existing clients.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Generate%20an%20additive%2C%20backward-compatible%20schema%20migration%20to%20support%20the%20tagging%20subsystem.%0A%0ADescribe%20the%20rollback%20plan%2C%20compatibility%20window%2C%20and%20expected%20impact%20to%20existing%20clients.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Generate an additive, backward-compatible schema migration to support the tagging subsystem.\n\nDescribe the rollback plan, compatibility window, and expected impact to existing clients.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>This forces Copilot to consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mon-breaking additive fields<\/li>\n\n\n\n<li>Optional fields vs. required fields<\/li>\n\n\n\n<li>Whether a dual-read or dual-write strategy is needed<\/li>\n\n\n\n<li>Safe rollback procedures<\/li>\n\n\n\n<li>API versioning implications<\/li>\n<\/ul>\n\n\n\n<p>If you&rsquo;re earlier in your career, this offers lessons on how safe migrations are designed. And if you&rsquo;re more experienced, this gives you a repeatable workflow for multi-step schema evolution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"advanced-refactoring-with-agentic-workflows\">Advanced refactoring with agentic workflows<\/h2>\n\n\n\n<p>Let&rsquo;s perform a real cross-module refactor: extracting validation out of controllers into a domain service.<\/p>\n\n\n\n<p><strong>Prompt:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Create a step-by-step refactor plan to extract validation logic into a domain service.\n\nIdentify affected modules and required test updates.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Create%20a%20step-by-step%20refactor%20plan%20to%20extract%20validation%20logic%20into%20a%20domain%20service.%0A%0AIdentify%20affected%20modules%20and%20required%20test%20updates.%0A%0AInstall%20the%20GitHub%20Agentic%20Workflows%20extension%20using%20the%20instructions%20https%3A%2F%2Fgithub.github.com%2Fgh-aw%2Fsetup%2Fquick-start%2F%23step-1---install-the-extension\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Create a step-by-step refactor plan to extract validation logic into a domain service.\n\nIdentify affected modules and required test updates.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>Copilot may output something like:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Introduce domain <code>validationService<\/code><\/li>\n\n\n\n<li>Move validation logic from controller to service<\/li>\n\n\n\n<li>Update controllers to use new service<\/li>\n\n\n\n<li>Update repository logic where validation assumptions leak<\/li>\n\n\n\n<li>Update domain tests<\/li>\n\n\n\n<li>Update integration tests<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"execute-in-incremental-steps\">Execute in incremental steps<\/h3>\n\n\n\n<p><strong>Prompt:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Execute steps 1&ndash;3 only. Stop before controller rewrites.\n\nProvide detailed diffs and call out risky areas.<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Execute steps 1&ndash;3 only. Stop before controller rewrites.\n\nProvide detailed diffs and call out risky areas.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>This is a low-blast-radius refactor, modeled directly in the IDE.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"modernizing-test-strategy\">Modernizing test strategy<\/h2>\n\n\n\n<p>Instead of asking Copilot &ldquo;write tests,&rdquo; ask it to assess the entire suite.<\/p>\n\n\n\n<p><strong>Prompt:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Analyze the current test suite and identify systemic gaps.\n\nRecommend a modernization plan including contract, integration, and domain-layer tests.<\/code><\/pre>\n<a href=\"https:\/\/github.com\/copilot?prompt=Analyze%20the%20current%20test%20suite%20and%20identify%20systemic%20gaps.%0A%0ARecommend%20a%20modernization%20plan%20including%20contract%2C%20integration%2C%20and%20domain-layer%20tests.\" class=\"code-copilot-btn\" aria-label=\"Open in Copilot\" target=\"_blank\" rel=\"noopener noreferrer\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" class=\"octicon octicon-copilot\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"><\/path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"><\/path><\/svg><\/a><clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Analyze the current test suite and identify systemic gaps.\n\nRecommend a modernization plan including contract, integration, and domain-layer tests.\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p><strong>Then implement contract tests:<\/strong><\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code\"><code>describe(\"NotesRepository contract\", () =&gt; {\n  test(\"create + fetch returns a fully hydrated note object\", async () =&gt; {\n    const note = await notesRepo.create({ title: \"Test\", body: \"&hellip;\" });\n    const fetched = await notesRepo.get(note.id);\n\n    expect(fetched).toMatchObject({ title: \"Test\" });\n    expect(fetched.id).toBeDefined();\n  });\n});<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='describe(\"NotesRepository contract\", () =&gt; {\n  test(\"create + fetch returns a fully hydrated note object\", async () =&gt; {\n    const note = await notesRepo.create({ title: \"Test\", body: \"&hellip;\" });\n    const fetched = await notesRepo.get(note.id);\n\n    expect(fetched).toMatchObject({ title: \"Test\" });\n    expect(fetched.id).toBeDefined();\n  });\n});' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p>This elevates testing into an architectural concern.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"a-complete-end-to-end-workflow\">A complete end-to-end workflow<\/h2>\n\n\n\n<p>Bringing it all together, here&rsquo;s a real sequence you might run with Copilot:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Ask Copilot to analyze the existing architecture: <\/strong>identify hazards, modularization opportunities<\/li>\n\n\n\n<li><strong>Define module boundaries: <\/strong>domain, repository, controller layers<\/li>\n\n\n\n<li><strong>Add tagging subsystem: <\/strong>architectural assessment to implementation to tests to doc updates<\/li>\n\n\n\n<li><strong>Create a backward-compatible migration: <\/strong>additive schema to rollback plan<\/li>\n\n\n\n<li><strong>Perform a targeted refactor: <\/strong>validation layer extraction<\/li>\n\n\n\n<li><strong>Modernize tests: <\/strong>contract + integration + domain tests<\/li>\n<\/ol>\n\n\n\n<p>This workflow is architecturally realistic&mdash;and a model for how Copilot becomes a system-level collaborator.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-agent-mode-is-not-for\">What agent mode is <em>not<\/em> for<\/h2>\n\n\n\n<p>It&rsquo;s important to clarify that agent mode is not ideal for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Altering domain invariants without human review<\/li>\n\n\n\n<li>Redesigning cross-service ownership boundaries<\/li>\n\n\n\n<li>Replacing logic driven by institutional knowledge<\/li>\n\n\n\n<li>Large sweeping rewrites across hundreds of files<\/li>\n\n\n\n<li>Debugging deep runtime issues<\/li>\n<\/ul>\n\n\n\n<p>Copilot should <em>support<\/em> your decision-making, not replace it.<\/p>\n\n\n\n<aside data-color-mode=\"light\" data-dark-theme=\"dark\" data-light-theme=\"light_dimmed\" class=\"wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--3\" style=\"border-top-width:4px\">\n<h2 class=\"wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5\" id=\"h-key-takeaways\" style=\"margin-top:0\">Key takeaways<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agent mode excels at <strong>multi-step, multi-file engineering workflows<\/strong>.<\/li>\n\n\n\n<li>Copilot is a <strong>design and coordination partner<\/strong>, not a replacement for judgment.<\/li>\n\n\n\n<li>Use Copilot for decomposition, refactoring, migrations, test strategy, and documentation.<\/li>\n\n\n\n<li>Start with architecture, not implementation.<\/li>\n\n\n\n<li>You can safely practice all these patterns in GitHub Skills.<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/github.blog\/ai-and-ml\/github-copilot\/agent-mode-101-all-about-github-copilots-powerful-mode\/\">Learn more about agent mode &gt;<\/a><\/p>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-to-go-next\">Where to go next<\/h2>\n\n\n\n<p>Here&rsquo;s where GitHub Skills comes in&mdash;not as &ldquo;beginner content,&rdquo; but as a set of guided, self-contained labs that reinforce the patterns above.&nbsp;<\/p>\n\n\n\n<p>Even senior engineers will benefit: These exercises are structured so you can reliably recreate complex workflows and test Copilot&rsquo;s behavior in controlled environments.<\/p>\n\n\n\n<div class=\"wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"https:\/\/learn.github.com\/skills\">Explore GitHub Skills &gt;<\/a><\/p>\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>A senior engineer&#8217;s guide to architecting and extending Copilot&#8217;s real-world applications.<\/p>\n","protected":false},"author":2282,"featured_media":93170,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"yes","_gh_post_is_no_robots":"","_gh_post_is_featured":"yes","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-security-invertocat-blocks-copilot-1-e1767926078566.png","_gh_post_sq_img_id":"93189","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"_links_to":"","_links_to_target":""},"categories":[3293,3295],"tags":[2535,3015],"coauthors":[3500],"class_list":["post-93542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-and-ml","category-github-copilot","tag-github-copilot","tag-github-skills"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to maximize GitHub Copilot&#039;s agentic capabilities - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"A senior engineer&#039;s guide to architecting and extending Copilot&#039;s real-world applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to maximize GitHub Copilot&#039;s agentic capabilities\" \/>\n<meta property=\"og:description\" content=\"A senior engineer&#039;s guide to architecting and extending Copilot&#039;s real-world applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-02T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T18:58:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ari LiVigni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ari LiVigni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/\"},\"author\":{\"name\":\"Ari LiVigni\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/bacfeedd3b313003d7ba4a0bd12f91bc\"},\"headline\":\"How to maximize GitHub Copilot&#8217;s agentic capabilities\",\"datePublished\":\"2026-02-02T17:00:00+00:00\",\"dateModified\":\"2026-04-21T18:58:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/\"},\"wordCount\":1109,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080\",\"keywords\":[\"GitHub Copilot\",\"GitHub Skills\"],\"articleSection\":[\"AI &amp; ML\",\"GitHub Copilot\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/\",\"name\":\"How to maximize GitHub Copilot's agentic capabilities - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080\",\"datePublished\":\"2026-02-02T17:00:00+00:00\",\"dateModified\":\"2026-04-21T18:58:52+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/bacfeedd3b313003d7ba4a0bd12f91bc\"},\"description\":\"A senior engineer's guide to architecting and extending Copilot's real-world applications.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080\",\"width\":1920,\"height\":1080,\"caption\":\"Copilot moves toward floating green cubes displaying GitHub-related icons in a decorative tech-themed scene.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/how-to-maximize-github-copilots-agentic-capabilities\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI &amp; ML\",\"item\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GitHub Copilot\",\"item\":\"https:\\\/\\\/github.blog\\\/ai-and-ml\\\/github-copilot\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How to maximize GitHub Copilot&#8217;s agentic capabilities\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/bacfeedd3b313003d7ba4a0bd12f91bc\",\"name\":\"Ari LiVigni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g9a596e30b44529ea84098b7f0bba26f1\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g\",\"caption\":\"Ari LiVigni\"},\"description\":\"Senior Service Delivery Engineer, GitHub\",\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/arilivigni\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to maximize GitHub Copilot's agentic capabilities - The GitHub Blog","description":"A senior engineer's guide to architecting and extending Copilot's real-world applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/","og_locale":"en_US","og_type":"article","og_title":"How to maximize GitHub Copilot's agentic capabilities","og_description":"A senior engineer's guide to architecting and extending Copilot's real-world applications.","og_url":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/","og_site_name":"The GitHub Blog","article_published_time":"2026-02-02T17:00:00+00:00","article_modified_time":"2026-04-21T18:58:52+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png","type":"image\/png"}],"author":"Ari LiVigni","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ari LiVigni","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#article","isPartOf":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/"},"author":{"name":"Ari LiVigni","@id":"https:\/\/github.blog\/#\/schema\/person\/bacfeedd3b313003d7ba4a0bd12f91bc"},"headline":"How to maximize GitHub Copilot&#8217;s agentic capabilities","datePublished":"2026-02-02T17:00:00+00:00","dateModified":"2026-04-21T18:58:52+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/"},"wordCount":1109,"image":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080","keywords":["GitHub Copilot","GitHub Skills"],"articleSection":["AI &amp; ML","GitHub Copilot"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/","url":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/","name":"How to maximize GitHub Copilot's agentic capabilities - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080","datePublished":"2026-02-02T17:00:00+00:00","dateModified":"2026-04-21T18:58:52+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/bacfeedd3b313003d7ba4a0bd12f91bc"},"description":"A senior engineer's guide to architecting and extending Copilot's real-world applications.","breadcrumb":{"@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080","width":1920,"height":1080,"caption":"Copilot moves toward floating green cubes displaying GitHub-related icons in a decorative tech-themed scene."},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/how-to-maximize-github-copilots-agentic-capabilities\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"AI &amp; ML","item":"https:\/\/github.blog\/ai-and-ml\/"},{"@type":"ListItem","position":3,"name":"GitHub Copilot","item":"https:\/\/github.blog\/ai-and-ml\/github-copilot\/"},{"@type":"ListItem","position":4,"name":"How to maximize GitHub Copilot&#8217;s agentic capabilities"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/bacfeedd3b313003d7ba4a0bd12f91bc","name":"Ari LiVigni","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g9a596e30b44529ea84098b7f0bba26f1","url":"https:\/\/secure.gravatar.com\/avatar\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/53595a480a2cfa4f313d016ec1207372596154cdd12ca106647c08de6361fc9f?s=96&d=mm&r=g","caption":"Ari LiVigni"},"description":"Senior Service Delivery Engineer, GitHub","url":"https:\/\/github.blog\/author\/arilivigni\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/01\/generic-github-copilot-smiling-flying-logo.png?fit=1920%2C1080","jetpack_shortlink":"https:\/\/wp.me\/pamS32-okK","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/93542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2282"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=93542"}],"version-history":[{"count":6,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/93542\/revisions"}],"predecessor-version":[{"id":95467,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/93542\/revisions\/95467"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/93170"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=93542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=93542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=93542"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=93542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}