agent365-skills
CLAUDE.md50 starsChanged 29 days agoMITView on GitHub
This repository is a Claude Code / GitHub Copilot CLI plugin marketplace containing skills for the Microsoft Agent 365 platform. Read this file before making any changes. 1. SKILL.md files are instructions for the AI, not code. They are read at skill invocation time. Keep them precise, phase-by-phase, and unambiguous. 3. Reference docs are the source of truth for code patterns. When the A365 SDK updates, update references/ — not SKILL.md. 4. Never commit secrets. The .gitignore excludes a365.generated.config.json, .env,…
- Reads credentials
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.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
- test-localSkill
The file
We split this CLAUDE.md into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
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
- Very specific: line 64
Validator scripts are plain Node.js: No dependencies allowed. They run in 15 seconds.
- Very specific: line 66
Reference docs are the source of truth for code patterns: When the A365 SDK updates, update references/ — not SKILL.md.
- Very specific: line 89
Every skill's Phase 0A Step 1 triage is responsible for writing this file (via a365-setup when missing on a project with code).
- Very specific: line 100
Run task lists to completion in one turn: When a skill creates a task list, execute every task and mark each complete (TaskUpdate or - [ ] …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md 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
Agent 365 Skills — Coding Agent Context
This repository is a Claude Code / GitHub Copilot CLI plugin marketplace containing skills for the Microsoft Agent 365 platform. Read this file before making any changes.
What's in this repo
agent365-skills/
├── .claude-plugin/marketplace.json # Marketplace manifest — lists all plugins
├── plugins/
│ └── agent365/ # The core plugin
│ ├── .claude-plugin/plugin.json # Skill declarations and triggers
│ ├── skills/
│ │ ├── a365-setup/SKILL.md # Entry point — CLI install, Azure prereqs, delegates
│ │ ├── make-a365-agent/SKILL.md # Blueprint provisioning (Register / Observability paths)
│ │ ├── make-ai-teammate/SKILL.md # AI Teammate transformation + publish pipeline
│ │ ├── instrument-observability/SKILL.md # OTel + A365 tracing exporter instrumentation
│ │ ├── a365-code-validator/SKILL.md # Observability/MAC Activity validation + guided fixes
│ │ ├── add-workiq-tools/SKILL.md # WorkIQ MCP server wiring
│ │ ├── purview-dlp-integration/SKILL.md # Purview DLP guard + gate wiring (Node.js / Python / .NET)
│ │ └── test-local/SKILL.md # Local testing with AgentsPlayground
│ ├── hooks/
│ │ ├── preToolUse/path-guard.js # Blocks writes outside project root
│ │ └── stop/ # Stop hook validators (plain Node.js, no deps)
│ │ ├── validate-a365-setup.js
│ │ ├── validate-make-a365-agent.js
│ │ ├── validate-make-ai-teammate.js
│ │ ├── validate-instrument-observability.js
│ │ ├── validate-add-workiq-tools.js
│ │ ├── validate-purview-dlp-integration.js
│ │ └── validate-test-local.js
│ └── shared/agent-detection.md # Shared heuristics for detecting agent type and authMode
├── tests/ # Unit tests for stop hook validators
│ ├── helpers.js
│ ├── validate-a365-setup.test.js
│ ├── validate-make-a365-agent.test.js
│ ├── validate-observability.test.js
│ ├── validate-workiq.test.js
│ └── validate-purview-dlp-integration.test.js
├── evals/
│ └── agent365/ # Evaluation test cases (one per skill)
│ ├── a365-setup/evals.json
│ ├── make-a365-agent/evals.json
│ ├── make-ai-teammate/evals.json
│ ├── instrument-observability/evals.json
│ ├── add-workiq-tools/evals.json
│ ├── purview-dlp-integration/evals.json
│ └── test-local/evals.json
├── scripts/install.js # One-liner installer for Claude Code + Copilot CLI
├── AGENTS.md # Top-level contributor guidelines
└── README.md # User-facing documentationKey rules
- SKILL.md files are instructions for the AI, not code. They are read at skill invocation time. Keep them precise, phase-by-phase, and unambiguous.
- Validator scripts are plain Node.js. No dependencies allowed. They run in 15 seconds.
- Reference docs are the source of truth for code patterns. When the A365 SDK updates,
update
references/— notSKILL.md. - Never commit secrets. The
.gitignoreexcludesa365.generated.config.json,.env, andappsettings.*.json. - Skills are additive. They never delete or restructure existing agent code.
- authMode canonical values are
obo,s2s, andagentic-user. Read case-insensitively, write lowercase. has_obsandhas_workiqare composite signals — entry-point symbol alone is insufficient.has_obs = truerequires entry-point call AND token resolver AND handler-sideBaggageBuilder/InvokeAgentScope.has_workiq = truerequires non-emptyToolingManifest.jsonAND the framework's MCP wiring symbol (addToolServersToAgent/GetMcpToolsAsync/AddToolServersToAgentAsync/add_tool_servers_to_agent) AND — whenmcp_WordServer+ Node.js LangChain — the Word@mentionwiring (WpxComment+proactive+userKeyToConversationId). Anything less ishas_obs_partial/has_workiq_partial(read-time only, not cached).make-ai-teammatePhase 9.5 / 9.6 must re-enter the sub-skill on partial, not silently skip.add-workiq-toolsPhase 4 must preserve obs anchors when editing files that overlap with the obs wrapping..a365-workspace-detection.local.jsonMUST exist before any code-edit phase. Every skill's Phase 0A Step 1 triage is responsible for writing this file (viaa365-setupwhen missing on a project with code). Phase 0A Step 2 begins with a hard STOP guard that refuses to proceed when the file is absent. The stop-hook validators (validate-make-ai-teammate.js,validate-instrument-observability.js,validate-add-workiq-tools.js) fail the session at end if the cache wasn't written. Never invent default cache values — re-runa365-setupinstead.- WorkIQ is not available for
authMode = s2s— never offer or invokeadd-workiq-toolsfor S2S agents. The guard exists at three layers:a365-setup,make-a365-agentPhase 4, andadd-workiq-toolsPhase 0B. - Run task lists to completion in one turn. When a skill creates a task list, execute
every task and mark each complete (
TaskUpdateor- [ ]→- [x]) the moment its phase finishes. Only pause at the explicit interaction points each SKILL.md documents (capabilities menu, run-target, blueprint Reuse/Re-run/Fresh, WorkIQ offer, MCP server selection, Word @mention offer whenmcp_WordServeris selected on Node.js LangChain, launch confirmation). CLI permission prompts and manual browser steps (Teams Dev Portal, M365 Admin Center, GA consent) are not stopping conditions — surface them with URL + action and continue. a365-code-validatoris report-first. It diagnoses exporter activation, agent-id binding, semantic span coverage, delegated (OBO-route) telemetry or a missing S2S route flag, and live Blueprint grants / effective inheritance through read-onlya365 query-entrachecks when login is already available. It then asks whether to apply safe fixes, create a fix plan, or stop. It must not provision, install packages, mutate Graph, grant permissions, or runa365 publish.purview-dlp-integrationis additive and report-first-validated. It copies one generic env-driven guard and wires an INPUT gate before the LLM + optional output auditing; the supplied policy does not filter sensitive responses. Delegated guards (purview.ts/purview.py/purview.cs) use the agent's token at/mewithContent.Process.User. Node.js client-secret FMI S2S usespurview-s2s.ts, the agent identity token at/users/{sponsor}/..., andContent.Process.Allon the agent identity SP. Never use a blueprint app-only token, runaz ad app permission admin-consenton the blueprint, or switch managed-identity-only agents to client-secret authentication. Manual IDs replace config discovery, not authentication; stop before editing unsupported plain bots and route toa365-setup. Guards always setcontentEntry.nameand fail closed by default. Its validator (validate-purview-dlp-integration.js) is report-first (advisoryfindings, alwaysok: true) because "start disabled / skip policy" is a valid bring-up state.- Telemetry always uses the S2S route with an app-only token, in every
authMode. The S2S route rejects delegated (scp) tokens, so OBO / Agentic User tokens are only for workload calls (MCP / Graph).obo/agentic-useragents get an app-only resolver that reuses the hosting connection's blueprint credential (AgentAppTokenResolver.cs/app-token-resolver.ts/app_token_resolver.py);s2sagents get the FMI token-service scaffold. Always set the S2S route flag (o.Agent365.UseS2SEndpoint = true,useS2SEndpoint: true,a365_use_s2s_endpoint=True). Never generate a per-turn delegated telemetry token (RegisterObservability(..., AgenticTokenStruct),refreshObservabilityToken(...),exchange_token(...)for the observability scope), and never add the delegatedOtelWritescope for telemetry. Registered blueprint agent instances need noAgent365.Observability.OtelWritepermission or admin consent, so never make an OBS grant a required step for them. Newera365 setup allversions skip OtelWrite for blueprint agents and fail when registration fails or cannot be verified; older versions may still grant OtelWrite (harmless) and may exit 0 after a failed registration, so check setup output and reruna365 setup all --agent-registration-onlyif needed. For blueprint agents, a 403insufficient_scopemeans the instance isn't registered. AI Teammates are authorized by their Blueprint's registration (subject to service policy), so newer CLI versions skip OtelWrite for them too; older versions still print anOtelWriteapplication-role step, which is harmless to complete. The application role on the Blueprint is always an accepted fallback on the S2S route.
Testing
# Run all validator unit tests
npm test
# Run a specific validator test suite
node --test tests/validate-a365-setup.test.js
node --test tests/validate-make-a365-agent.test.js
node --test tests/validate-observability.test.js
node --test tests/validate-workiq.test.js
# Validate stop hooks directly against the current directory
node plugins/agent365/hooks/stop/validate-a365-setup.js
node plugins/agent365/hooks/stop/validate-instrument-observability.js
node plugins/agent365/hooks/stop/validate-make-a365-agent.js
# Test skill against a real agent project
cd /path/to/dotnet-agent
claude --plugin-dir /path/to/agent365-skills/plugins/agent365
# Say: "instrument observability for this agent"
# Run evals manually
# See evals/README.md for detailed testing instructionsFor comprehensive eval test cases, see evals/README.md.
Allowed commands
dotnet *, npm *, node *, python *, python3 *, pip *, pip3 *, uv *, a365 *, az *, pwsh *, devtunnel *, agentsplayground *, git *, grep *, find *, cat *, ls *
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.

