Agentic Coding Workshop: Day 2 Handout
Homework, setup commands and reference notes from day 2 of my agentic coding workshop with Codex.
2026-10-15 · 25 min read
How to use this page
- Pick a chapter from the contents on the left. On a phone, tap Contents at the top.
- Each chapter shows on its own. Use Next at the bottom to go to the following one.
- Each chapter has its own link, so you can share or bookmark it.
What is inside
- HomeworkThe 8 tasks for this week, with tick boxes, and the safety rules.
- CommandsTested commands to connect Azure Boards, docs, hooks, Langfuse and skills.
- Plugins, MCP, tools, skills, agents, hooksWhat each one is, how they work together, and which ones to add.
- ResourcesWhat to read first, then links grouped by topic.
Do these before Friday. Tick them off as you go. Your ticks stay saved in this browser.
- 1
How: in
.codex/agents, add agents for your kind of work. For example: C# developer, React developer, tester, reviewer, DB query optimiser, security reviewer, DevOps / Azure Pipelines. Ask Codex to update each one by learning from that codebase. Then someone who knows the code reviews them. - 2
How: push it to the repo, so your team gets the same agents with
git pull. Any change to an agent goes through a PR, just like code. - 3
How: give full context. That means a ticket screenshot or board access, the repo, and any design docs. Ask it to keep a progress doc at
docs/progress/<ticket>.mdso it doesn't lose track. - 4
How: ask Codex to create one worktree per ticket. Raise one PR per ticket.
- 5
How: use it for every commit and PR. Add before and after screenshots to your PRs.
- 6
How: follow Get a notification when Codex stops. Codex will then tell you when it's done or waiting for you.
- 7
How: pick any that help.
Wispr Flow for voice typing
Azure Boards MCP, if your org allows it
Context7 or Microsoft Learn MCP for up-to-date docs
Langfuse to see what the agents do
- 8
How: jot down short notes as you go.
- What worked
- What broke
- How many tasks you did
- Was it faster or slower
Step 1 · Build the team
Pick one real repo. Add an agent file for each kind of work in .codex/agents. For example a C# developer, a tester and a reviewer.
Scroll sideways to see the whole picture.
Step 1 · One worktree per ticket
Ask Codex to create a git worktree for each ticket. Each one gets its own folder and branch.
The prompt to set this up is in Agent team prompts.
- Never point agents at production. Use staging or local Docker.
- Never paste secrets or student data into a chat or prompt.
- If a token was shared or shown on screen, delete it and make a new one.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: lets Codex read and update your Azure Boards work items.
Scroll sideways to see the whole picture.
config.toml. When Codex opens, it reads that file and starts the server. The server uses your token to reach Azure Boards.Step 1 · Make a PAT
In Azure DevOps, open User settings (top right), then Personal access tokens, then New Token. Give it Work Items: Read & write. Copy the token. Azure shows it only once.
Windows (PowerShell)
Type each line on its own and press Enter. Each command is one line. Do not split them with \ or `. Split lines broke in PowerShell during class.
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("you@company.com:YOUR_PAT"))codex mcp add azure-devops --env "PERSONAL_ACCESS_TOKEN=$b64" -- npx -y @azure-devops/mcp YOUR_ORG --authentication pat -d core work work-itemsNot tested on Windows. The second line is the same command that was tested on Mac.
Mac (Terminal)
b64=$(printf '%s' 'you@company.com:YOUR_PAT' | base64)codex mcp add azure-devops --env "PERSONAL_ACCESS_TOKEN=$b64" -- npx -y @azure-devops/mcp YOUR_ORG --authentication pat -d core work work-itemsYOUR_ORG is the part after dev.azure.com/ in your Azure DevOps address.
Common mistakes
- Raw PAT instead of base64. The server rejects it. Make the
$b64value first. - No space before
--authentication. For examplework-items--authentication. The command then breaks. - Running the command inside Codex. It must go in the terminal.
- Wrong entry already saved. Remove it, then add it again:
codex mcp remove azure-devopsOptional: stop the "approve this tool?" prompts
Only do this on a test board. Codex will then change work items without asking you.
Open ~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml). Find the [mcp_servers.azure-devops] block and add this line under it:
[mcp_servers.azure-devops]
default_tools_approval_mode = "approve"Keep the command and args lines that are already there. Allowed values are auto, prompt, writes and approve.
Keep the token safe
- If your PAT showed up in a chat, a screenshot or a shared screen, delete it in Azure DevOps and make a new one.
- Base64 is not encryption. Anyone who can read
config.tomlcan use the token.
Browser sign-in instead of a PAT
Leave out --authentication pat and the --env part. Codex then opens a browser to sign in. This only works with a work account, in an Azure DevOps org that is connected to Microsoft Entra. If sign-in fails, use the PAT.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: lets Codex search the official Microsoft and Azure docs. No key needed.
codex mcp add microsoft-learn --url https://learn.microsoft.com/api/mcpStep 1 · Add the server
Run the codex mcp add microsoft-learn ... command in a terminal.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: gives Codex up-to-date docs and code samples for open-source libraries (React, Next.js, Prisma and so on).
Get a free API key at https://context7.com/dashboard first. It works without one too, but with lower limits. You only need one of the three options.
Option A: one command (from the Context7 docs for Codex)
codex mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEYOption B: guided setup
It signs you in through the browser and writes the config for you:
npx ctx7 setup --codexOption C: as a Codex plugin (adds a skill too)
codex plugin marketplace add upstash/context7codex plugin add context7@context7-marketplaceStep 1 · Pick one option
Run option A, B or C in a terminal. You only need one.
If it fails to start on Windows
Context7's docs say: add startup_timeout_ms = 40_000 under [mcp_servers.context7] in config.toml. If it says "program not found", put the full path to npx.cmd in command.
Not tested on Windows.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: runs a small command when Codex stops (Stop) or when it waits for your OK (PermissionRequest). These are called hooks.
The hooks file is:
- Windows:
%USERPROFILE%\.codex\hooks.json - Mac:
~/.codex/hooks.json
If the file already has hooks in it, add these entries to the ones you have. Do not paste a second "hooks" block.
Step 1 · Save the script
Windows only. Save notify.ps1 in your .codex folder. It shows the pop-up. Test it on its own before you go on. Mac does not need a script.
Trust it again after every edit
Each time you change hooks.json, restart Codex, type /hooks and choose Trust again.
Windows: pop-up notification
Step 1. Make the script. Open Notepad:
notepad $env:USERPROFILE\.codex\notify.ps1Paste this and save:
param([string]$Message = "Codex finished")
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$n = New-Object System.Windows.Forms.NotifyIcon
$n.Icon = [System.Drawing.SystemIcons]::Information
$n.Visible = $true
$n.ShowBalloonTip(5000, "Codex", $Message, [System.Windows.Forms.ToolTipIcon]::Info)
Start-Sleep -Seconds 6
$n.Dispose()Test it by itself:
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\.codex\notify.ps1" "Hello"Step 2. Open the hooks file:
notepad $env:USERPROFILE\.codex\hooks.jsonPaste this. Change YOU to your Windows user name (the folder name under C:\Users).
{
"hooks": {
"Stop": [
{ "hooks": [ { "type": "command", "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"C:\\Users\\YOU\\.codex\\notify.ps1\" \"Codex finished\"" } ] }
],
"PermissionRequest": [
{ "hooks": [ { "type": "command", "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"C:\\Users\\YOU\\.codex\\notify.ps1\" \"Codex needs your OK\"" } ] }
]
}
}Rules for the path in JSON:
- Use the full path. Not
~and not%USERPROFILE%. - Use two backslashes
\\for each\. - Do not use forward slashes
/. In class that gave "illegal character in path".
Not tested on Windows. The JSON itself was checked and is valid.
Windows: sound only (simpler)
Put this as the command value instead. It plays the Windows notify sound and waits until it ends.
"command": "powershell -NoProfile -c \"(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\notify.wav').PlaySync()\""Shorter, using a system sound. The short wait stops PowerShell from closing before the sound plays.
"command": "powershell -NoProfile -c \"[System.Media.SystemSounds]::Asterisk.Play(); Start-Sleep 1\""Not tested on Windows.
Mac
Open the hooks file:
open -e ~/.codex/hooks.jsonIf it says the file does not exist, run touch ~/.codex/hooks.json first. Then paste:
{
"hooks": {
"Stop": [
{ "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Codex finished\" with title \"Codex\" sound name \"Glass\"'" } ] }
],
"PermissionRequest": [
{ "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Codex needs your OK\" with title \"Codex\" sound name \"Glass\"'" } ] }
]
}
}Test the notification by itself:
osascript -e 'display notification "Codex finished" with title "Codex" sound name "Glass"'If nothing pops up, allow notifications for Script Editor in System Settings > Notifications.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: sends a trace of every Codex run to Langfuse. A trace is a record of each step, sub-agent and token count.
Full guide, with how to make the base64 login: docs/langfuse-codex-setup.md.
Paste this at the end of config.toml (Windows: %USERPROFILE%\.codex\config.toml, Mac: ~/.codex/config.toml):
[otel]
environment = "workshop"
log_user_prompt = false
trace_exporter = { otlp-http = { endpoint = "https://us.cloud.langfuse.com/api/public/otel/v1/traces", protocol = "binary", headers = { "Authorization" = "Basic <BASE64_LOGIN>", "x-langfuse-ingestion-version" = "4" } } }
[otel.span_attributes]
"langfuse.user.id" = "<YOUR_NAME>"
"langfuse.environment" = "workshop"<BASE64_LOGIN>is base64 ofpublic-key:secret-keyfrom your Langfuse project. Keep the wordBasicand the space.- Keep the
trace_exporter = ...part on one line. - EU project? Use
https://cloud.langfuse.com/api/public/otel/v1/traces. - If the file already has an
[otel]line, do not add a second one.
Step 1 · Paste the config
Add the [otel] block to config.toml. Put in your own base64 login and name.
These were checked on a Mac with Codex CLI 0.162. Lines marked "Not tested on Windows" were not run, because the test machine has no PowerShell.
Run every codex ... command in a normal terminal (PowerShell or Terminal). Do not type them inside a Codex chat.
Use your own values in place of YOUR_PAT, you@company.com, YOUR_ORG, YOUR_API_KEY and YOU.
What it does: installs ready-made skills. oled-doc builds a clean black HTML doc with clickable flow diagrams. commit-code commits your changes as small, grouped commits.
Run one line at a time:
codex plugin marketplace add rakeshbhugra/skills-marketplacecodex plugin add oled-doc@rakesh-skillscodex plugin add commit-code@rakesh-skillsThere is a third one if you write Python backends: codex plugin add code-taste-python@rakesh-skills.
Step 1 · Add the marketplace
Run the first line. It tells Codex where the skills live.
Paste these into Codex, inside your project folder.
Create the agents
Create a team of agents for this codebase: a planner, a developer, a tester and a reviewer. Read the code first so each agent knows our stack, folders and test commands. Save each agent as its own file in the agents folder.Update the agents after the code changes
Read this codebase again and update every agent in the agents folder so it matches how the code works today. Fix wrong folder names, test commands and tools. Tell me what you changed.Run the team on a ticket
Run the agent team on work item 1234. The planner writes a plan first. Then the developer builds it, the tester tests it and the reviewer checks it. Keep a progress doc at docs/progress/1234.md. Update it after each step with what was done, what is next and any blockers.Scroll sideways to see the whole picture.
Step 1 · You paste the prompt
Put your own work item number in place of 1234. Paste the prompt into Codex.
Two git worktrees, to work on two tickets at once
Create two git worktrees next to this repo: one for work item 1234 on branch feature/1234 and one for work item 5678 on branch feature/5678. Show me the folder of each and how to open Codex in it.Checked against the official docs on 15 Oct 2026. Codex facts are for Codex CLI 0.162.
On Windows, ~ means your user folder, C:\Users\<you>. So ~/.codex is C:\Users\<you>\.codex.
Tools
Why
The model can only write text. It needs tools to do anything on your machine.
What
Actions built into the agent. It can run a command, edit a file or search the web.
How
The model picks a tool and asks to use it. You approve it, or your settings approve it for you.
- What we did in class
- Codex ran
dotnet buildthrough itsshelltool. It changed files withapply_patch. - Where it lives
- Inside the agent itself. There is no file for you to edit. Codex approval rules are in
~/.codex/config.toml. Claude Code approval rules are in.claude/settings.json.
MCP servers
Why
Built-in tools only reach your own computer. MCP lets the agent reach other apps.
What
MCP (Model Context Protocol) is an open standard for connecting AI apps to outside systems (modelcontextprotocol.io). An MCP server is a small program that gives the agent new tools, such as "read work item 123".
How
Add it once with a command. The agent then sees the server's tools next to its own tools.
- What we did in class
- The Playwright MCP opened a browser and clicked through our app. Azure Boards MCP read our tickets. Microsoft Learn MCP looked up .NET docs.
- Where it lives
- Codex:
[mcp_servers.<name>]in~/.codex/config.toml, or.codex/config.tomlin a trusted project. Add one withcodex mcp add playwright -- npx @playwright/mcp@latest. (docs) - Claude Code:
.mcp.jsonin the repo for the whole team, or~/.claude.jsonfor just you. Add one withclaude mcp add playwright -- npx @playwright/mcp@latest. (docs)
- Codex:
- Safety
- Your token sits in the config file. The model calls the tool but never sees the token. That fits your "no credentials to the LLM" rule.
Skills
Why
You stop typing the same long instructions every time. A skill saves them once.
What
A folder with a SKILL.md file. It holds steps, rules and sometimes scripts for one kind of job.
How
Call it by name. Or the agent loads it by itself when your request matches the skill's description. Only the name and description sit in memory until the skill is used.
- What we did in class
$oled-docwrote the PRD page.$commit-codesplit changes into small commits. The SchoolNet style guide skill kept code in house style.
Agents (subagents)
Why
One long chat gets messy. A helper with its own job and its own clean memory stays focused.
What
A named helper with its own instructions. It can have its own model and settings. It does one part of the work and reports back.
How
Ask for it by name, for example "have the tester check this". Claude Code also hands work to a helper by itself when the description matches. Codex starts helpers when you ask, or when AGENTS.md or a skill tells it to. (Codex docs)
- What we did in class
- pm, developer, tester, infra and reviewer agents in
.codex/agents/*.toml. - Where it lives
- Codex: one TOML file per agent in
.codex/agents/(repo) or~/.codex/agents/(you). Each file needsname,descriptionanddeveloper_instructions. - Claude Code: one Markdown file per agent in
.claude/agents/(repo) or~/.claude/agents/(you). Each file needsnameanddescription. (docs)
- Codex: one TOML file per agent in
Hooks
Why
Your computer runs it, not the model. So the model cannot skip it.
What
A command that runs at a fixed moment, such as before every tool call or when a turn ends.
Examples
Block any git push to main. Run dotnet format after every file edit.
Plugins
Why
Copying skill folders and MCP settings to 20 laptops by hand goes wrong. A plugin installs them all with one command and keeps them up to date.
What
One package that holds skills, MCP servers and hooks. A marketplace is a Git repo that lists plugins.
How
Add the marketplace once. Then install plugins from it by name.
- Install in Codex
- Claude Code:
codex plugin marketplace add rakeshbhugra/skills-marketplace codex plugin add oled-doc@rakesh-skills/plugin marketplace add rakeshbhugra/skills-marketplace, then/plugin install oled-doc@rakesh-skills. - What a plugin can hold
- Where it lives
- Codex: downloaded to
~/.codex/plugins/cache/<marketplace>/<plugin>/. - Claude Code: downloaded to
~/.claude/plugins/.
- Codex: downloaded to
Scroll sideways to see the whole table.
| Thing | What it is | Who decides to use it | Where it lives (Codex / Claude Code) | Example from class |
|---|---|---|---|---|
| Tool | A built-in action like "run command" or "edit file" | The model, with your approval | Built in / built in | shell running dotnet build |
| MCP server | A program that adds tools to reach another app | The model, with your approval | config.toml / .mcp.json | Playwright, Azure Boards, Microsoft Learn |
| Skill | Saved know-how for one kind of job, in SKILL.md | You ($name or /name), or the model when it matches | .agents/skills/ / .claude/skills/ | $oled-doc, $commit-code |
| Agent | A helper with its own instructions and clean memory | You ask for it. Claude may also choose one itself. | .codex/agents/*.toml / .claude/agents/*.md | pm, developer, tester, infra, reviewer |
| Hook | A command that always runs at a set moment | Nobody. It always runs. | hooks.json / settings.json | Block push to main |
| Plugin | A package of skills, MCP servers and hooks | You, once, when you install it | ~/.codex/plugins/cache/ / ~/.claude/plugins/ | oled-doc@rakesh-skills |
The names look alike. They do different jobs.
House rules
AGENTS.md
- What
- House rules for the main agent
- When it is read
- Every session, before any work starts
- Format
- Plain Markdown
- Where
~/.codex/AGENTS.md, then the repo root, then each folder down to where you are- Example
- "Use .NET 8. Run
dotnet testbefore saying done."
Helpers
.codex/agents/*.toml
- What
- Helpers the main agent can call on
- When it is read
- Only when a helper is started
- Format
- One TOML file per helper
- Where
.codex/agents/or~/.codex/agents/- Example
tester.toml: "Write and run xUnit tests for the change."
How Codex reads AGENTS.md files
Step 1 · Your own file
Codex reads ~/.codex/AGENTS.md first. Put rules here that you want in every project.
Scroll sideways to see the whole picture.
Step 1 · You ask
You type: "Fix ticket 4512. The leave form saves the wrong date."
Scroll sideways to see the whole table.
| Name | Why you want it | Cost | Windows |
|---|---|---|---|
| Read and update work items, PRs and builds from the agent | Free | Yes (Node). A hosted version is in preview. | |
Current .NET and Azure docs instead of old memory. URL: https://learn.microsoft.com/api/mcp | Free, no sign-in | Yes | |
| Current docs for npm, NuGet and other libraries, for the right version | Free. A free key gives higher limits. | Yes | |
| Agent opens a real browser, clicks, fills forms and takes screenshots | Free | Yes | |
Issues, PRs and code search on GitHub. Has a --read-only switch. | Free | Yes | |
| Agent can query SQL Server, Postgres or MySQL. Turn on read-only mode and use a test database. | Free (MIT) | Yes (Node) |
Scroll sideways to see the whole table.
| Name | Why you want it | Cost | Windows |
|---|---|---|---|
| commit-code | Splits your changes into small commits with clear messages | Free | Yes |
| oled-doc | Turns a plan into a clean HTML page with clickable flow diagrams | Free | Yes |
| Maps a whole codebase into a graph the agent can search. Good for old projects nobody remembers. | Free (Apache 2.0) | Yes (Python) | |
| journey-report | Records a video of each user journey with Playwright and builds an HTML report | Free. Rakesh's own skill, ask him for it. | Yes |
| Anthropic's skill for React and HTML pages that do not look generic | Free | Yes |
Scroll sideways to see the whole table.
| Name | Why you want it | Cost | Windows |
|---|---|---|---|
| See every LLM call your app makes: prompt, answer, cost, time. Open source. | Free to self-host. Free cloud: 50k units a month, 2 users. | Yes (web) | |
| Same job, made by the LangChain team | Free: 1 seat, 5k traces a month. Plus: $39 per seat a month. | Yes (web) | |
| One gateway in front of 100+ model providers. Gives each team its own key and budget. | Free to self-host | Yes (Docker or Python) | |
| Run several Codex sessions side by side, each on its own copy of the code | Comes with your ChatGPT plan | Yes | |
| Same idea for Claude Code | Needs a Claude plan | Yes | |
| Talk instead of type. Long prompts get much faster. | Free: 2,000 words a week. Pro: $15 a month. | Yes | |
| Free voice typing that runs on your own machine. Nothing leaves the laptop. | Free (MIT) | Yes |
Langfuse or LangSmith? Pick Langfuse if you want to host it yourself and keep data in-house. Pick LangSmith if you already use LangChain.
Scroll sideways to see the whole table.
| Made by | Anthropic | OpenAI | Open source (GitHub, MIT) |
| Models | Claude only | OpenAI only | Many providers, including local models |
| Cost | Claude plan or API key | ChatGPT plan (your Team plan) or API key | Free tool. You pay the model provider. |
| Skills, MCP, agents, hooks | All four | All four | Has MCP and agents |
| Windows | Yes | Yes | Yes |
| Best for | Long, careful changes | What you already pay for | Trying other models, or not being tied to one company |
n8n
Drag-and-drop workflows with AI steps. Can be self-hosted.
Example
New leave request in a form, AI checks the policy, manager gets a Teams message
Free tier
Free to self-host. Cloud is paid, with a trial.
Make
Visual workflows with branches and loops
Example
School fills a demo form, a CRM entry is made, sales gets an email
Free tier
Yes, about 1,000 steps a month
Zapier
Simplest "when this happens, do that" tool. Thousands of apps.
Example
New invoice in Gmail, saved to SharePoint, row added to Excel
Free tier
Yes, 100 tasks a month, 2-step only
Power Automate
Microsoft's version. Already in most Microsoft 365 plans.
Example
Teacher fills a Microsoft Form, approval goes to HR in Teams
Free tier
Standard connectors come with Microsoft 365
ElevenLabs
Lifelike voice from text, in many languages
Example
Product walk-through narrated in English, Hindi and Kannada
Free tier
Yes, 10,000 credits a month. No commercial use.
HeyGen
Video of a talking avatar from a script
Example
1-minute welcome video for new school admins
Free tier
Yes, 3 videos a month, up to 1 minute, watermark
NotebookLM
Upload documents and ask questions. Answers point to the source.
Example
HR loads the leave and travel policy. Staff ask "how many casual leaves do I get?"
Free tier
Yes, with a Google account
- Which job do you repeat every week that should become a skill? What would its first three steps be?
- Which app should your agent reach next through MCP? Boards, your SQL Server, or something else? What must it never be allowed to change?
- What rule should be a hook, so the agent can never skip it?
Step 1 · MCP basics
Start with "What is MCP?" in the MCP links. MCP is how an agent calls outside tools, like Azure DevOps or Microsoft Learn. Most other links assume you know it. Go to the MCP links
What is MCP?modelcontextprotocol.ioThe official intro to the protocol that lets agents call outside tools.
Azure DevOps MCP servergithub.comLets an agent read and update work items, repos and pipelines.
Azure DevOps MCP: getting started and FAQgithub.comA personal access token (PAT) works.
Browser sign-in needs a work (Entra ID) account. Personal Microsoft accounts do not work.
Microsoft Learn MCP serverlearn.microsoft.comFree, no sign-in. Gives agents up-to-date Microsoft docs for Azure and .NET questions.
Context7context7.comGives agents current docs for many libraries, so they stop guessing old APIs.
Subagents and custom agentslearn.chatgpt.comHow to give Codex helper agents with their own role and instructions.
Hookslearn.chatgpt.comRun your own script at set moments, like before a tool runs or when a task ends.
MCP in Codexlearn.chatgpt.comHow to plug MCP servers into Codex.
AGENTS.mdagents.mdThe shared file format for project instructions. Codex, Copilot and others read it.
Config referencelearn.chatgpt.comEvery setting in
config.toml, in one place.
System Design in a Hurry: introductionhellointerview.comA short, practical start to system design.
Delivery frameworkhellointerview.comShows how to split needs into functional (what it does) and non-functional (how many users, peak traffic, how fast).
Ask your PM these questions before you build.
git worktreegit-scm.comCheck out several branches in separate folders at once, so two agents can work side by side without clashing.
Pro Git: getting startedgit-scm.comFree beginner book from the Git project.
Resolving a merge conflictdocs.github.com
Step by step, from the command line.
Langfuse with OpenTelemetrylangfuse.comSend traces to Langfuse using the open standard.
Langfuse + LiteLLMlangfuse.comHow to connect a LiteLLM gateway to Langfuse.
LiteLLM OpenTelemetry setupdocs.litellm.aiAdd
callbacks: ["langfuse_otel"]to the proxy config. Sending all traces to Langfuse is free in open-source LiteLLM.Only per-team or per-key logging (sending different teams to different Langfuse projects) needs LiteLLM Enterprise.
Langfuse pricinglangfuse.comThe free Hobby plan gives 50k units a month, 2 users and 30 days of data. Self-hosting is also an option.
Custom data retention is a paid feature. Self-hosting keeps data forever by default.
What is infrastructure as code? (Microsoft Learn)learn.microsoft.comA short intro. Your servers and settings live in files, so pre-prod can match prod exactly.
Terraform introdeveloper.hashicorp.comThe most common tool. Works with Azure, AWS and others.
Pulumi docspulumi.comSame idea, but you write it in TypeScript, Python or C#.
Azure Bicep overviewlearn.microsoft.comMicrosoft's own option for Azure only.
Because the setup is plain text, an agent can read it and propose changes you review like code.
Rakesh's skills marketplacegithub.com
The skills shown in the workshop. Copy what you need.
graphifygithub.comTurns a codebase into a knowledge graph an agent can search. Useful for understanding a large, unfamiliar repo.
Playwright docsplaywright.devAutomated browser tests.
Playwright MCPgithub.comLets an agent open a real browser, click through your app and check it works.
Wispr Flowwisprflow.aiTalk instead of type, in any app. On Windows, hold Ctrl+Win to dictate (you can change this in Settings).
Handygithub.comFree, open source, and works fully offline.
Windows voice typingsupport.microsoft.comBuilt in. Press Win+H.
You do not need these yet.
herdrherdr.devKeeps your coding agents running in the background, even after you disconnect, and lets you pick them up from any machine.
- Codemangithub.com
Self-hosted dashboard to run several coding agents (Claude Code, Codex and others) and watch them live from any device.
tmuxgithub.comSplit one terminal into many panes. Keeps sessions alive after you disconnect.