test-local
Skill50 starsChanged 29 days agoMITView on GitHub
Runs an Agent 365 AI Teammate agent locally and opens AgentsPlayground for interactive local testing. Works with any AI Teammate stack — .NET (AgentFramework, Semantic Kernel), Node.js (LangChain, OpenAI, Claude SDK, Semantic Kernel, Google ADK), or Python (AgentFramework, LangChain, OpenAI, Claude, Semantic Kernel, Google ADK). Checks prerequisites (agentsplayground CLI, build tools), builds the agent, starts it in the background, and launches the playground UI pointed at the local endpoint. AgentsPlayground connects to /api/messages over HTTP — the LLM framework does not matter.
- Pipes a download into a shell
- Reads credentials
- Installs packages
2 other projects use a version of this.
Adopted by
Most recently taken up by
- alex-voloshin-dev/ai-skillstheir own version, first seen May 17, 2026
- searlsco/prove_ittheir own version, first seen Mar 30, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- searlsco/prove_it★ 198same name
- alex-voloshin-dev/ai-skills★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- a365-code-validatorSkill
- a365-setupSkill
- add-workiq-toolsSkill
- instrument-observabilitySkill
- make-a365-agentSkill
- make-ai-teammateSkill
- purview-dlp-integrationSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 15 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 73
All actions are read-only against your codebase — no code is modified.
- Very specific: line 99
Check for detection cache: Read .a365-workspace-detection.local.json if it exists.
- Distinctive: line 101
If cache is missing or stale, run detection globs in parallel:
- Distinctive: line 110
If the user provided a port as the skill argument, use that instead.
- Distinctive: line 117
If agent type cannot be determined, stop and ask:
- Distinctive: line 130
After detection, immediately verify the required build tool is installed:
- Distinctive: line 140
If yes, show the appropriate command for the detected OS and ask the user to run it:
- Very specific: line 148
After install, restart the terminal then run dotnet --version to confirm.
- Distinctive: line 158
If yes, show the appropriate command:
- Very specific: line 166
After install, run node --version to confirm.
- Very specific: line 183
After install, confirm with python3 --version 2>/dev/null || python --version.
- Distinctive: line 199
If found, report the version and continue.
- Distinctive: line 206
If the user chooses Yes:
- Distinctive: line 212
Verify the install succeeded:
- Distinctive: line 218
If installation fails or the user chooses No, stop and tell the user:
- Distinctive: line 222
Do NOT continue if agentsplayground cannot be confirmed installed.
- Distinctive: line 254
If build fails, show the error output and stop:
- Distinctive: line 257
Do NOT attempt to launch a broken build.
- Distinctive: line 353
If the user reports the agent is not responding, suggest:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Test Agent Locally (AgentsPlayground)
Trigger phrases — any of these will activate this skill automatically:
- "test this agent locally"
- "run my agent locally"
- "open agentsplayground"
- "launch agentsplayground"
- "start a local test session"
- "debug this agent locally"
- "test my agent without deploying to teams"
- "spin up a local test"
Overview
This skill starts your agent on localhost and opens AgentsPlayground — a local web UI that simulates a Teams-like chat interface without requiring a deployment or Bot Framework auth.
What it does:
- Detects agent language and framework (.NET, Node.js, or Python)
- Checks agentsplayground is installed — installs if missing
- Builds the agent to confirm there are no compile errors
- Starts the agent in the background
- Launches AgentsPlayground pointed at the local endpoint
- Guides a local test and confirms observability logs are flowing (if instrumented)
Why AgentsPlayground works for all AI Teammate stacks:
- Web UI that matches the Teams message format
- Connects to
/api/messagesover HTTP — the LLM framework on the server side does not matter - The
-c emulatorflag bypasses Bot Framework auth — no extra config needed for any stack requireAuth: falseinMapAgentApplicationEndpointsis the only .NET-specific prerequisite
All actions are read-only against your codebase — no code is modified.
Phase 0 — Create and Display Task List
Show the user this checklist BEFORE Phase 1. Exactly one task in_progress at a time; complete before moving on. Use whichever mechanism the runtime supports:
- Claude Code: call
TaskCreatefor each item below (already inallowed-tools); the list renders natively. UseTaskUpdateto flip statuses.- VS Code Copilot Chat / GitHub Copilot CLI:
allowed-toolsis ignored — emit a markdown checklist directly in chat (- [ ] Detect agent type…) and edit items to- [x]as each phase completes.
TaskCreate: "Detect agent type and verify build tools"
TaskCreate: "Install agentsplayground"
TaskCreate: "Build agent"
TaskCreate: "Launch agent and AgentsPlayground"
TaskCreate: "Guide local test"Phase 1 — Detect Agent Type
Mark task in progress: "Detect agent type and verify build tools"
- Read
${CLAUDE_PLUGIN_ROOT}/shared/agent-detection.mdfor detection heuristics. Check for detection cache. Read
.a365-workspace-detection.local.jsonif it exists. IfdetectedAtis within the last 60 minutes, loadagentStackandprogrammingLanguage— skip the globs below and go to step 3.If cache is missing or stale, run detection globs in parallel:
- Glob
**/*.csproj→ .NET - Glob
**/package.json+.ts/.jssource files present → Node.js - Glob
**/*.pyorrequirements.txt/pyproject.toml→ Python
- Glob
- Determine default port:
- .NET:
5000(HTTP,dotnet rundefault) - Node.js:
3978(standard Bot Framework port) - Python:
3978(aiohttp default in AI Teammate hosting layer) - If the user provided a port as the skill argument, use that instead.
- .NET:
- Determine start command:
- .NET:
dotnet run - Node.js:
npm start(fall back tonpm run devifstartscript absent) - Python: detect entry point — check for
host_agent_server.py,app.py, ormain.py. Detect the Python command:python3 --version 2>/dev/null && echo python3 || echo python. Usepython3if available (macOS/Linux default), otherwisepython(Windows). Run with<python-cmd> <entry>(oruvicorn app:app --port 3978if an ASGI app is detected).
- .NET:
- If agent type cannot be determined, stop and ask:
AskUserQuestion:
question: "I couldn't detect the agent type. What are you working with?"
options:
- .NET (AgentFramework or Semantic Kernel)
- Node.js (LangChain, OpenAI, Claude SDK, Semantic Kernel, or Google ADK)
- Python (AgentFramework, LangChain, OpenAI, Claude, Semantic Kernel, or Google ADK)1.3 — Check language build tool
After detection, immediately verify the required build tool is installed:
For .NET — check dotnet --version. If missing or below 8.0:
AskUserQuestion:
question: "dotnet SDK 8.0+ is required but not found. Install it now?"
options:
- "Yes — install it for me"
- "No — I'll install manually and re-run"If yes, show the appropriate command for the detected OS and ask the user to run it:
Windows: winget install Microsoft.DotNet.SDK.8
macOS: brew install --cask dotnet-sdk
Linux: sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0
(or: https://learn.microsoft.com/en-us/dotnet/core/install/linux)
All: https://dotnet.microsoft.com/downloadAfter install, restart the terminal then run dotnet --version to confirm.
For Node.js — check node --version. If missing or below 18:
AskUserQuestion:
question: "Node.js 18+ is required but not found. Install it now?"
options:
- "Yes — install it for me"
- "No — I'll install manually and re-run"If yes, show the appropriate command:
Windows: winget install OpenJS.NodeJS.LTS
macOS: brew install node
Linux: sudo apt-get update && sudo apt-get install -y nodejs npm
(or via nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash && nvm install --lts)
All: https://nodejs.org (LTS)After install, run node --version to confirm.
For Python — check python3 --version 2>/dev/null || python --version. If missing or below 3.11:
AskUserQuestion:
question: "Python 3.11+ is required but not found. Install it now?"
options:
- "Yes — install it for me"
- "No — I'll install manually and re-run"If yes, show the appropriate command:
Windows: winget install Python.Python.3.11
macOS: brew install python@3.11
Linux: sudo apt-get install -y python3.11 python3.11-venv python3-pip
All: https://python.orgAfter install, confirm with python3 --version 2>/dev/null || python --version.
Mark task complete: "Detect agent type and verify build tools"
Phase 2 — Install agentsplayground
Mark task in progress: "Install agentsplayground"
Check if installed:
agentsplayground --versionIf found, report the version and continue.
If not found, ask the user:
"AgentsPlayground CLI is not installed. Install it now with
npm install -g @microsoft/agentsplayground?" Options: Yes, install it / No, I'll install it manually
If the user chooses Yes:
npm install -g @microsoft/agentsplaygroundVerify the install succeeded:
agentsplayground --versionIf installation fails or the user chooses No, stop and tell the user:
"Install agentsplayground manually with:
npm install -g @microsoft/agentsplaygroundthen re-run this skill."
Do NOT continue if agentsplayground cannot be confirmed installed.
Mark task complete: "Install agentsplayground"
Phase 3 — Build Agent
Mark task in progress: "Build agent"
For .NET
dotnet buildFor Node.js
npm install
npm run build || npm run compile || echo "No build script — skipping compile check"For Python
# Use pip3 on macOS/Linux, pip on Windows — try pip3 first
pip3 install -r requirements.txt 2>/dev/null || pip install -r requirements.txt || pip install .
# Verify the active Python version (use python3 on macOS/Linux, python on Windows)
python3 --version 2>/dev/null || python --versionIf build fails, show the error output and stop:
"Fix the build errors above and re-run this skill to continue."
Do NOT attempt to launch a broken build.
Mark task complete: "Build agent"
Phase 4 — Launch Agent and AgentsPlayground
Mark task in progress: "Launch agent and AgentsPlayground"
4.1 — Ask user before launching
AskUserQuestion:
question: "Ready to start the agent and open AgentsPlayground for a local test?"
options:
- "Yes — start agent and open playground"
- "No — show me the commands and I'll run them manually"4.2 — If yes: launch
Inform the user:
Two terminals are needed. Starting both now.
Start the agent (terminal 1) — command varies by language:
- .NET:
dotnet run - Node.js:
npm start(fall back tonpm run dev) - Python:
python3 <entry-point>on macOS/Linux (e.g.python3 host_agent_server.py);python <entry-point>on Windows
Note for .NET: The
-c "emulator"flag bypasses Bot Framework auth. This works becauseMapAgentApplicationEndpointswithrequireAuth: falseskips token validation for local traffic. No config changes are needed for Node.js or Python.
Poll until the agent responds (max ~20 s), then launch AgentsPlayground — same command for all stacks:
# Poll until agent responds (works on Windows/macOS/Linux — no seq dependency)
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
curl -s --max-time 1 "http://localhost:<port>/api/messages" > /dev/null 2>&1 && break
sleep 1
done
agentsplayground -e "http://localhost:<port>/api/messages" -c "emulator"4.3 — If no: show commands
Present the commands for the user to run in two terminals:
Terminal 1 — start your agent:
.NET: dotnet run
Node.js: npm start
Python (macOS/Linux): python3 host_agent_server.py (or python3 app.py / python3 main.py)
Python (Windows): python host_agent_server.py (or python app.py / python main.py)
Terminal 2 — open AgentsPlayground (same for all stacks and platforms):
agentsplayground -e "http://localhost:<port>/api/messages" -c "emulator"Mark task complete: "Launch agent and AgentsPlayground"
Phase 5 — Guide Local Test
Mark task in progress: "Guide local test"
Tell the user:
AgentsPlayground is open. Send a message in the chat window to test your agent.
What to watch for:
- Agent responds — confirms the messaging stack is wired correctly.
- Terminal logs — if observability is instrumented, look for these signals in this order:
TheAgent365Exporter: Exporting batch of N spans. [Agent365Exporter] M non-genAI spans filtered out [Agent365Exporter] Partitioned into K identity groups (X spans skipped) Agent365ExporterCore: Obtained token for agent <agentId> tenant <tenantId>. Agent365ExporterCore: Sending chunk 1 of 1 (J spans, B bytes) to https://agent365.svc.cloud.microsoft/observabilityService/tenants/<tenant>/otlp/agents/<agent>/traces?api-version=1. Agent365ExporterCore: HTTP 200 exporting spans. 'x-ms-correlation-id': '<guid>'.HTTP 200 exporting spansline is the definitive confirmation that traces reached the A365 backend. The URL must contain/observabilityService/(the S2S route every auth mode uses)./observability/means the S2S route flag is missing (useS2SEndpoint: true/a365_use_s2s_endpoint=True/o.Agent365.UseS2SEndpoint = true). A 403insufficient_scopefrom the S2S route with an app-only token means the service could not authorize the agent by registration and it has noOtelWriteapplication role. For blueprint agents, runa365 setup all --agent-registration-only. For AI Teammates, a Global Administrator grants theOtelWriteapplication role on the Blueprint (seeinstrument-observability).Partitioned into K identity groupsshould showK >= 1for at least one batch after a Teams turn — if it's always0, the agent/tenant ID is missing from baggage (likely theGuid.Emptyfallback bug — verifyinstrument-observabilitywas followed correctly). To see these logs you needMicrosoft.Agents.A365.Observability: Debug(or lower) inappsettings.json'sLogging:LogLevel.To export traces to the A365 service (not just console):
- .NET: set
EnableAgent365Exporter: trueinappsettings.json(SDK defaults tofalsewhen key is absent)- Node.js / Python: set
ENABLE_A365_OBSERVABILITY_EXPORTER=truein.envStopping the agent: Press
Ctrl+Cin Terminal 1.
If the user reports the agent is not responding, suggest:
- Confirm the port matches (check the startup log for the listening URL)
- .NET: check
MapAgentApplicationEndpointsis called withrequireAuth: false - Node.js: check the express listener port in
index.ts - Python: check the aiohttp port in
host_agent_server.pyorapp.py
Mark task complete: "Guide local test"
Phase 6 — Final Summary
- TaskList — Show all completed tasks.
- Present summary:
✅ Local test session ready!
Agent: [language + framework, e.g. Python · AgentFramework]
Agent endpoint: http://localhost:<port>/api/messages
AgentsPlayground: running (emulator mode — no auth required)
Observability check:
If instrumented — watch terminal for:
"Agent365ExporterCore: HTTP 200 exporting spans. 'x-ms-correlation-id': ..."
(and "Partitioned into K identity groups" with K >= 1)
Requires Microsoft.Agents.A365.Observability: Debug in Logging:LogLevel.
To export to A365 service:
.NET: set EnableAgent365Exporter: true in appsettings.json
Node.js/Python: set ENABLE_A365_OBSERVABILITY_EXPORTER=true in .env
To stop: Ctrl+C in the agent terminal.Error Handling
| Situation | Action |
| agentsplayground install fails | Report error; show manual install command; stop |
| Build fails | Show error; do not launch; stop |
| Agent port already in use | Suggest --port <other> or kill the existing process |
| Playground cannot connect | Check agent is listening; verify port matches |
Node.js npm start not found | Try npm run dev; if neither, ask user for start command |
| Python entry point unclear | Check for host_agent_server.py, app.py, or main.py; ask user if ambiguous |
| Python port mismatch | Check aiohttp port in entry point; default is 3978 for AI Teammate hosting |
Prerequisites
| Tool | Required | Install |
agentsplayground | Yes (all stacks) | npm install -g @microsoft/agentsplayground |
dotnet (8.0+) | .NET only | Windows: winget install Microsoft.DotNet.SDK.8 · macOS: brew install --cask dotnet-sdk · Linux: see https://learn.microsoft.com/en-us/dotnet/core/install/linux |
node / npm (18+) | All stacks (agentsplayground requires npm) | Windows: winget install OpenJS.NodeJS.LTS · macOS: brew install node · Linux: apt install nodejs npm · https://nodejs.org |
python3 or python (3.11+) | Python only | Windows: winget install Python.Python.3.11 · macOS: brew install python@3.11 · Linux: apt install python3.11 · https://python.org |
References
- Agent Detection:
${CLAUDE_PLUGIN_ROOT}/shared/agent-detection.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

