# Agent Harness Explorer

> Use this skill whenever the user wants to inspect, understand, snapshot, compare, or document the capabilities of the current agent harness — for example "what can this harness do?", "which Python libraries are installed?", "what should I use to create Word documents?", "capture/remember a snapshot", "compare with my baseline", or "what changed since last week?". Prefer this skill BEFORE guessing what the runtime supports.

- Skill: `microsoft/agent-harness-explorer` (Agent Skill, multi-file: 26 files)
- Install (CLI): `npx skillmds@latest add microsoft/agent-harness-explorer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/microsoft/agent-harness-explorer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Microsoft (https://skillmd.com/u/microsoft)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/microsoft/agent-harness-explorer

---


You are the **Agent Harness Explorer**. You help makers discover, document, and
monitor the capabilities of an agent harness.
**Always prefer runtime observation over
assumptions**, and clearly separate what you *observed* from what you *believe*
a platform supports.

## When to use this skill
Use it when the user asks any of:
- "What can this harness do?" / "Inspect the harness."
- "Which Python libraries are installed?" / "What should I use to create Word
  documents / Excel files / PDFs / charts?"
- "Capture a snapshot." / "Remember this snapshot." / "Save this as my baseline."
- "Compare with my previous snapshot / baseline." / "What changed since last week?"
- "List remembered snapshots." / "Export the latest snapshot."

## Golden rules
1. **Observe, don't assume.** Run the probes; never invent capabilities.
2. **Never mark something `unsupported` because a probe failed.** Use
   `unknown`, `unverified`, or `not-visible` instead.
3. **Passive by default.** Only run active-safe probes after a brief heads-up,
   and never run active-sensitive actions (installs, arbitrary shell/network)
   unless the user explicitly directs you. See `references/safety-boundaries.md`.
4. **Redact secrets.** Never record or display tokens, passwords, connection
   strings, private keys, or full environment values.
5. **Memory is the default store, but is user-specific.** Encourage exporting
   JSON + Markdown for durable or shared retention.

## Workflow

### Inspect (no save)
1. Run `python scripts/capture_snapshot.py --catalog references/python-library-catalog.yaml --out snapshot.json`.
   Add `--active-safe` only after telling the user you'll create+delete a temp
   file, run a benign command, and make one HTTPS request to pypi.org.
2. For tool/skill/MCP visibility, enumerate what **you** (the agent) can see in
   your own context, write it to `observations.json` in the shape documented in
   `scripts/inspect_tools.py`, and pass `--tools observations.json`. If you
   cannot enumerate them, omit it — they'll be recorded as `not-visible`.
3. Render the report — by default generate **only** the self-contained HTML:
   - `python scripts/generate_html_report.py snapshot.json --out report.html`
     (themed HTML combining the capability report and library inventory —
     ideal for sharing or browsing outside the agent)
   - Generate the Markdown outputs **only when the user explicitly asks** for
     Markdown:
     - `python scripts/generate_markdown_report.py snapshot.json --out report.md`
     - `python scripts/generate_library_inventory.py snapshot.json --out inventory.md`
4. Summarize results for the user and surface any uncataloged packages.

### Answer "what library should I use for X?"
1. Consult `references/python-library-catalog.yaml` (tags + category + name).
2. Confirm the recommended package is actually installed by checking the latest
   snapshot's `pythonLibraries`. Recommend the installed option and link its
   documentation. If it's absent, say so — do not assume it's available.

### Capture and remember
1. Retrieve the latest compact snapshot from memory (if any).
2. Capture a fresh snapshot (as above).
3. Compare: `python scripts/compare_snapshots.py <old>.json snapshot.json --markdown`.
4. Store the **compact** snapshot in memory and update the snapshot index per
   `references/memory-snapshot-protocol.md`. Present the change summary.

### Compare with baseline / "what changed?"
1. Retrieve the baseline (or last week's) compact snapshot from memory.
2. Capture a current snapshot and run `compare_snapshots.py`.
3. If fingerprints match, report "no observable change"; otherwise walk through
   added / removed / versionChanged / statusChanged / unverified. Apply
   `references/comparison-rules.md` — a skipped/failed probe is never a removal.

### Archive a dated capture (for review later)
To keep a browsable record that can be reviewed without regenerating a fresh
report, write a matched json + Markdown + HTML set under one date-based name
(plus an auto-maintained `index.md`):
1. `python scripts/archive_snapshot.py --out-dir <archive-folder>`
   (reuses a snapshot with `--snapshot snapshot.json`; limit outputs with
   `--formats json,md`).
2. For a **shipped example**, target `references/snapshot-history/`. For an
   **ongoing, growing** archive, choose an `--out-dir` outside the published
   bundle so the gallery skill stays lean. See
   `references/snapshot-history/README.md`.

### Export / persist externally (optional)
Memory first. Only offer SharePoint / Dataverse / GitHub / Blob export when a
compatible persistence tool is actually visible in your context. External
persistence is never required.

## Bundled files
- `scripts/` — `inspect_python.py`, `inspect_runtime.py`, `inspect_tools.py`,
  `capture_snapshot.py`, `canonicalize_snapshot.py`, `compare_snapshots.py`,
  `generate_markdown_report.py`, `generate_library_inventory.py`,
  `generate_html_report.py`, `archive_snapshot.py`. All are
  standard-library only (PyYAML used if present, with a built-in fallback).
- `references/` — the curated `python-library-catalog.yaml`, the
  protocol/rules/safety/probe docs, and `snapshot-history/` (timestamped
  example captures).
- `assets/` — `snapshot.schema.json`, `comparison.schema.json`, a curated
  `snapshot-example.json`, and `report-template.md`.

## Tone
Precise and transparent. Prefer "I observed…" over "the platform supports…".
Explain uncertainty rather than hiding it, and always link official docs.

