# GitHub Copilot CLI

Published articles for GitHub Copilot CLI.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Porting a Discord Bot to Microsoft Teams with GitHub Copilot CLI

DevFeed: [Porting a Discord Bot to Microsoft Teams with GitHub Copilot CLI](<https://devfeed.tech/articles/porting-a-discord-bot-to-microsoft-teams-entirely-with-ai-31471.md>)

Original publisher: [Read original article](<https://code.dblock.org/2026/09/16/porting-strata-to-microsoft-teams-entirely-with-ai.html>)

Author: Daniel Doubrovkine (dblock@dblock.org)

Published: 2026-09-16T00:00:00Z

Content type: article

Language: en

Sources: [Daniel Doubrovkine](<https://devfeed.tech/sources/daniel-doubrovkine.md>)

Topics: [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [Microsoft Teams](<https://devfeed.tech/topics/microsoft-teams.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Discord](<https://devfeed.tech/topics/discord.md>), [AdventureX 2025](<https://devfeed.tech/topics/adventurex2025.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [discord](<https://devfeed.tech/tags/discord.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [microsoft-teams](<https://devfeed.tech/tags/microsoft-teams.md>), [porting](<https://devfeed.tech/tags/porting.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [strava](<https://devfeed.tech/tags/strava.md>)

### AI overview

The article compares a manual 2023 port of a Strava chat bot from Slack to Discord with a 2026 port to Microsoft Teams completed with GitHub Copilot CLI. The Teams port took three days and involved authentication, app-manifest, tenant distribution, and Azure setup work.

### Source excerpt

Slava (slack-strava) connects a Strava account to a chat and posts a card for every activity, complete with map, pace, and elevation, plus commands like connect, disconnect, stats, and leaderboard. In 2023 I ported Slava to Discord by hand, evening by evening over about three weeks, and it took most of that stretch to get a working bot called Strada (discord-strava). This week I ported the same app to Microsoft Teams as Strata (teams-strava) in 3 days instead of the 3 weeks the Discord port took, using time carved out during the Microsoft Global Hackathon. By "I", I mean GitHub Copilot CLI and I. The 2023 Baseline discord-strava's git history is a fair record of how long a manual port takes. The first commit, "Initial fork from slack-strava," landed July 30, 2023. "Most interactions working" was three days later. Getting install/help/error-handling polish took through August 20: 2023-07-30 23:56 Initial fork from slack-strava. 2023-08-02 23:46 Most interactions working. 2023-08-03 06:18 Remove PNG retrieval, Discord displays redirects correctly. 2023-08-03 06:26 Removed clubs. 2023-08-03 08:28 Fixed model specs. 2023-08-03 18:20 Fix API specs. 2023-08-04 19:44 Fix command specs. ... 2023-08-08 10:34 Countinously poll with 1 minute intervals. 2023-08-20 22:59 Improved install button and text. 20 commits spread across 9 evenings over roughly three weeks (there's a real job and a life in between those timestamps). All hand-typed, with GitHub Copilot's inline autocomplete helping the way it helped everyone in 2023, but no agent driving the actual porting work. The 2026 Port teams-strava's git history is a single continuous Copilot CLI session, 107 conversational turns over three calendar days, and the timestamps compress dramatically: 2026-09-14 11:05 Initial port of discord-strava to Microsoft Teams 2026-09-14 16:39 Fix local dev setup and personal-scope install handling 2026-09-14 16:43 Fix 400 error replying to personal-scope install notice 2026-09-15 08:29 Document

## How we make AI coding more cost efficient without sacrificing task quality

DevFeed: [How we make AI coding more cost efficient without sacrificing task quality](<https://devfeed.tech/articles/how-we-make-ai-coding-more-cost-efficient-without-sacrificing-task-quality-79.md>)

Original publisher: [Read original article](<https://github.blog/ai-and-ml/github-copilot/how-we-make-ai-coding-more-cost-efficient-without-sacrificing-task-quality/>)

Author: Erik Kristensen

Published: 2026-09-02T18:00:00Z

Content type: article

Language: en

Sources: [GitHub](<https://devfeed.tech/sources/github.md>), [GitHub Engineering](<https://devfeed.tech/sources/github-engineering.md>)

Topics: [GitHub Copilot](<https://devfeed.tech/topics/github-copilot.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [coding](<https://devfeed.tech/topics/coding.md>), [GitHub Copilot app](<https://devfeed.tech/topics/github-copilot-app.md>), [GitHub Copilot code review](<https://devfeed.tech/topics/github-copilot-code-review.md>)

Tags: [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [agentic-coding](<https://devfeed.tech/tags/agentic-coding.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [ai-ml](<https://devfeed.tech/tags/ai-ml.md>), [architecture-optimization](<https://devfeed.tech/tags/architecture-optimization.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [compression](<https://devfeed.tech/tags/compression.md>), [cost](<https://devfeed.tech/tags/cost.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [experiments](<https://devfeed.tech/tags/experiments.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [github-copilot-code-review](<https://devfeed.tech/tags/github-copilot-code-review.md>), [llms](<https://devfeed.tech/tags/llms.md>), [prompt-engineering](<https://devfeed.tech/tags/prompt-engineering.md>)

### AI overview

GitHub Copilot's efficiency work focuses on total task cost and duration rather than minimizing tokens in individual tool responses. The article describes evaluating changes with coding benchmarks and controlled experiments, and explains that overly compressed output can cause agents to repeat work.

### Source excerpt

Why shorter outputs can cost more, and how GitHub Copilot reduces wasted work across the complete coding task. The post How we make AI coding more cost efficient without sacrificing task quality appeared first on The GitHub Blog.

## Generating AI Descriptions of Automated Pull Requests

DevFeed: [Generating AI Descriptions of Automated Pull Requests](<https://devfeed.tech/articles/generating-ai-descriptions-of-automated-pull-requests-20531.md>)

Original publisher: [Read original article](<https://code.dblock.org/2026/08/11/generating-ai-descriptions-of-automated-pull-requests.html>)

Author: Daniel Doubrovkine (dblock@dblock.org)

Published: 2026-08-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Daniel Doubrovkine](<https://devfeed.tech/sources/daniel-doubrovkine.md>)

Topics: [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [GitHub Copilot](<https://devfeed.tech/topics/github-copilot.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [changelog](<https://devfeed.tech/topics/changelog.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [JSON](<https://devfeed.tech/topics/json.md>), [YAML](<https://devfeed.tech/topics/yaml.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [automated](<https://devfeed.tech/tags/automated.md>), [changelog](<https://devfeed.tech/tags/changelog.md>), [ci](<https://devfeed.tech/tags/ci.md>), [cli](<https://devfeed.tech/tags/cli.md>), [copilot](<https://devfeed.tech/tags/copilot.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [json](<https://devfeed.tech/tags/json.md>), [llm](<https://devfeed.tech/tags/llm.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

A tutorial explains how the maintainer of the slack-ruby-client library uses a scheduled GitHub Actions workflow and GitHub Copilot CLI to generate meaningful commit messages, pull request bodies, and CHANGELOG entries from diffs of regenerated Slack API code. It also covers YAML indentation, prompt files, response logging, and extracting a JSON result from Copilot CLI output.

### Source excerpt

The slack-ruby-client library, an open source Ruby gem I maintain, runs a scheduled GitHub Actions workflow that regenerates code from Slack's API definitions and opens a pull request with the diff. The commit message and CHANGELOG entry used to be a generic "Update API (2026-08-11)", which told a reviewer nothing about what actually changed. Here's how we taught the workflow to describe its own diffs, using GitHub Copilot CLI, which open source maintainers can get for free. The Idea The workflow already computes a diff before opening the pull request. Instead of a boilerplate commit message, we pipe that diff through an LLM and ask it to summarize what changed, then use the response as the commit message and PR body. - name: Check for changes id: changes run: | if git diff --quiet; then echo "changed=false" >> "$GITHUB_OUTPUT" else echo "changed=true" >> "$GITHUB_OUTPUT" fi - name: Prepare diff for AI summary if: steps.changes.outputs.changed == 'true' run: | git diff --stat | sed 's/^/ /' > /tmp/diff_stat.txt git diff | head -c 20000 | sed 's/^/ /' > /tmp/diff.txt The sed 's/^/ /' indent isn't decorative. actions/ai-inference substitutes template variables as raw text into a prompt YAML file before parsing it, so a multi-line diff starting at column 0 breaks the indentation of the enclosing content: |- block scalar. Pre-indenting the file to match keeps the YAML valid no matter what the diff looks like. The Prompt File actions/ai-inference supports .prompt.yml files, a small convention for keeping the system/user prompt out of the workflow YAML. messages: - role: system content: |- You write CHANGELOG entries describing an automated API update to slack-ruby-client, a Ruby gem whose Web API endpoint methods, argument validations, specs, and bin commands are code-generated from vendored Slack API method definitions (via a git submodule and rake task). Given a diffstat and a diff of the regenerated files, respond with ONLY a single JSON object (no markdown code fence

## C++ Dependencies Without the Headache: vcpkg + Copilot CLI

DevFeed: [C++ Dependencies Without the Headache: vcpkg + Copilot CLI](<https://devfeed.tech/articles/c-dependencies-without-the-headache-vcpkg-copilot-cli-2955.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/cppblog/c-dependencies-without-the-headache-vcpkg-copilot-cli/>)

Author: Augustin Popa

Published: 2026-07-20T21:05:25Z

Content type: article

Language: en

Sources: [C++ Team Blog](<https://devfeed.tech/sources/c-team-blog.md>)

Topics: [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [Vcpkg](<https://devfeed.tech/topics/vcpkg.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [GitHub Copilot](<https://devfeed.tech/topics/github-copilot.md>), [MSVC](<https://devfeed.tech/topics/msvc.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cmake](<https://devfeed.tech/tags/cmake.md>), [copilot](<https://devfeed.tech/tags/copilot.md>), [github](<https://devfeed.tech/tags/github.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [msvc](<https://devfeed.tech/tags/msvc.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [pure-virtual-c-plus-plus](<https://devfeed.tech/tags/pure-virtual-c-plus-plus.md>), [vcpkg](<https://devfeed.tech/tags/vcpkg.md>), [writing-code](<https://devfeed.tech/tags/writing-code.md>)

### AI overview

A practical walkthrough of building a C++ console application from an empty folder with CMake, MSVC Build Tools, vcpkg, and GitHub Copilot CLI. It demonstrates dependency selection, installation, integration, reproducible builds, and controlled dependency updates through a terminal-first workflow.

### Source excerpt

At Pure Virtual C++ 2026, we build a C++ console app from an empty folder using CMake, MSVC, and GitHub Copilot CLI. This walkthrough shows a practical prompt sequence for dependency selection, reproducible builds, and controlled updates. The post C++ Dependencies Without the Headache: vcpkg + Copilot CLI appeared first on C++ Team Blog.

## The Real Python Podcast - Episode #303: Free-Threaded Python's History & uv in Production

DevFeed: [The Real Python Podcast - Episode #303: Free-Threaded Python's History & uv in Production](<https://devfeed.tech/articles/the-real-python-podcast-episode-303-free-threaded-python-s-history-uv-in-production-4387.md>)

Original publisher: [Read original article](<https://realpython.com/podcasts/rpp/303/>)

Author: Real Python

Published: 2026-07-17T12:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Wagtail](<https://devfeed.tech/topics/wagtail.md>), [Django](<https://devfeed.tech/topics/django.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [cli](<https://devfeed.tech/tags/cli.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [locks](<https://devfeed.tech/tags/locks.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [production](<https://devfeed.tech/tags/production.md>), [python](<https://devfeed.tech/tags/python.md>), [techniques](<https://devfeed.tech/tags/techniques.md>)

### AI overview

This podcast episode discusses the history of attempts to remove Python's Global Interpreter Lock, the current free-threaded Python approach, and the challenges of running multiple tasks concurrently within one process. It also covers Python community news and projects, including JIT compiler work, GitHub Copilot CLI, MCP server testing, uv in production, Wagtail with Django, Python code quality, and thread-safety techniques.

### Source excerpt

How many attempts have been made to remove Python's Global Interpreter Lock (GIL)? How do they compare to the current approach? Christopher Trudeau is back on the show this week with another batch of PyCoder's Weekly articles and projects.

## Vercel Plugin now available in VS Code and GitHub Copilot CLI

DevFeed: [Vercel Plugin now available in VS Code and GitHub Copilot CLI](<https://devfeed.tech/articles/vercel-plugin-now-available-in-vs-code-and-github-copilot-cli-1165.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/vercel-plugin-now-available-in-vs-code-and-github-copilot-cli>)

Author: Melkey Moksyakov

Published: 2026-07-14T00:00:00Z

Content type: release

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [vercel ai sdk](<https://devfeed.tech/topics/vercel-ai-sdk.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [cli](<https://devfeed.tech/tags/cli.md>), [extensions](<https://devfeed.tech/tags/extensions.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [vercel](<https://devfeed.tech/tags/vercel.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>)

### AI overview

Vercel released a plugin for VS Code and the GitHub Copilot CLI that provides Copilot with on-demand Vercel platform knowledge and current API guidance.

### Source excerpt

The Vercel Plugin is now available in VS Code and the GitHub Copilot CLI. GitHub Copilot now has Vercel platform knowledge on demand, with skills for Next.js, AI SDK, Vercel Functions, and more. The Vercel plugin also helps Copilot stay up to date with the latest Vercel APIs and recommended patterns. To install it for Copilot Chat, search for @agentPlugins vercel in the Extensions panel in VS Code. To install it for the GitHub Copilot CLI, run npx plugins add vercel/vercel-plugin. Learn more in the Vercel Plugin documentation. Read more

## A Unified Experience for all Coding Agents

DevFeed: [A Unified Experience for all Coding Agents](<https://devfeed.tech/articles/a-unified-experience-for-all-coding-agents-4031.md>)

Original publisher: [Read original article](<https://code.visualstudio.com/blogs/2025/11/03/unified-agent-experience>)

Author: VS Code Team

Published: 2025-11-05T00:00:00Z

Content type: article

Language: en

Sources: [Visual Studio Code - Code Editing. Redefined.](<https://devfeed.tech/sources/visual-studio-code-code-editing-redefined.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agents](<https://devfeed.tech/tags/agents.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [code](<https://devfeed.tech/tags/code.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [codex](<https://devfeed.tech/tags/codex.md>), [coding](<https://devfeed.tech/tags/coding.md>), [copilot](<https://devfeed.tech/tags/copilot.md>), [developers](<https://devfeed.tech/tags/developers.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [extension](<https://devfeed.tech/tags/extension.md>), [feature](<https://devfeed.tech/tags/feature.md>), [features](<https://devfeed.tech/tags/features.md>), [github](<https://devfeed.tech/tags/github.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [integration](<https://devfeed.tech/tags/integration.md>), [openai](<https://devfeed.tech/tags/openai.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>)

### AI overview

VS Code introduces a unified agent experience centered on Agent Sessions for managing local and cloud coding agents. The article also describes OpenAI Codex integration through GitHub Copilot Pro+ subscriptions.

### Source excerpt

Agents took over VS Code in 2025. We released agent mode for VS Code, integration for the Copilot coding agent, and the new GitHub Copilot CLI. But Copilot is not the only agent game in town. There are now more coding agents than ever, including options from OpenAI and Anthropic. Read the full article

## GitHub Copilot for CLI for PowerShell

DevFeed: [GitHub Copilot for CLI for PowerShell](<https://devfeed.tech/articles/github-copilot-for-cli-for-powershell-21853.md>)

Original publisher: [Read original article](<https://www.hanselman.com/blog/github-copilot-for-cli-for-powershell>)

Author: Scott Hanselman

Published: 2023-04-25T15:31:49Z

Content type: tutorial

Language: en

Sources: [Scott Hanselman](<https://devfeed.tech/sources/scott-hanselman.md>)

Topics: [GitHub Copilot CLI](<https://devfeed.tech/topics/github-copilot-cli.md>), [PowerShell](<https://devfeed.tech/topics/powershell.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [github](<https://devfeed.tech/tags/github.md>), [github-copilot-cli](<https://devfeed.tech/tags/github-copilot-cli.md>), [powershell](<https://devfeed.tech/tags/powershell.md>)

### AI overview

This article explains how GitHub Copilot CLI routes its shell commands through the github-copilot-cli executable and demonstrates PowerShell aliases that adapt those commands for PowerShell, including an option to run the generated command.

### Source excerpt

GitHub Next has this cool project that is basically Copilot for the CLI (command line interface). You can sign up for their waitlist at the Copilot for CLI site. Copilot for CLI provides three shell commands: ??, git? and gh? This is cool and all, but I use PowerShell. Turns out these ?? commands are just router commands to a larger EXE called github-copilot-cli. So if you go "?? something" you're really going "github-copilot-cli what-the-shell something." So this means I should be able to to do the same/similar aliases for my PowerShell prompt AND change the injected prompt (look at me I'm a prompt engineer) to add 'use powershell to.' Now it's not perfect, but hopefully it will make the point to the Copilot CLI team that PowerShell needs love also. Here are my aliases. Feel free to suggest if these suck. Note the addition of "user powershell to" for the ?? one. I may make a ?? and a p? where one does bash and one does PowerShell. I could also have it use wsl.exe and shell out to bash. Lots of possibilities. function ?? { $TmpFile = New-TemporaryFile github-copilot-cli what-the-shell ('use powershell to ' + $args) --shellout $TmpFile if ([System.IO.File]::Exists($TmpFile)) { $TmpFileContents = Get-Content $TmpFile if ($TmpFileContents -ne $nill) { Invoke-Expression $TmpFileContents Remove-Item $TmpFile } } } function git? { $TmpFile = New-TemporaryFile github-copilot-cli git-assist $args --shellout $TmpFile if ([System.IO.File]::Exists($TmpFile)) { $TmpFileContents = Get-Content $TmpFile if ($TmpFileContents -ne $nill) { Invoke-Expression $TmpFileContents Remove-Item $TmpFile } } } function gh? { $TmpFile = New-TemporaryFile github-copilot-cli gh-assist $args --shellout $TmpFile if ([System.IO.File]::Exists($TmpFile)) { $TmpFileContents = Get-Content $TmpFile if ($TmpFileContents -ne $nill) { Invoke-Expression $TmpFileContents Remove-Item $TmpFile } } } It also then offers to run the command. Very smooth. Hope you like it. Lots of fun stuff happening in this space.