Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Agents are the primary entity. Each agent bundles 5 component types: MCP servers
- Pi

**Functional** (config gen and scanning work, but no session parser or hook spec):
- Gemini CLI, Codex CLI, Copilot, Copilot CLI, OpenCode
- Codex CLI, Copilot, Copilot CLI, OpenCode

See `docs/adding-a-harness.md` for the complete guide to adding or promoting a harness.

Expand Down
2 changes: 1 addition & 1 deletion docs/cli/pull.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ For Kiro:
| `.kiro/steering/<name>.md` | Steering file (the agent's system instructions) |
| `.kiro/settings/mcp.json` | MCP servers, wrapped via `observal-shim` |

For Cursor / VS Code / Gemini CLI: primarily MCP config + rules files at the appropriate path.
For Cursor, VS Code, Copilot, and OpenCode: primarily MCP config plus rules or agent files at the appropriate path.

## Environment variables

Expand Down
1 change: 0 additions & 1 deletion docs/cli/skill.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ Two scopes are supported:
observal skill install my-skill --harness claude-code
observal skill install @sk --harness kiro --scope project
observal skill install 2 --harness cursor --raw > config.json
observal skill install my-skill --harness gemini-cli --no-write
```

| Option | Description |
Expand Down
1 change: 0 additions & 1 deletion docs/e2e-test-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@
- [ ] Kiro
- [ ] Claude Code
- [ ] Codex
- [ ] Gemini CLI
- [ ] Copilot
- [ ] Open Code

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ observal auth whoami

## 4. Discover and instrument your harness

If you already have MCP servers configured in Claude Code, Kiro, Cursor, VS Code, or Gemini CLI, first see what's there:
If you already have MCP servers configured in Claude Code, Kiro, Cursor, VS Code, or Copilot, first see what's there:

```bash
observal scan
Expand Down
18 changes: 7 additions & 11 deletions docs/hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,6 @@ observal registry hook install <name> --harness cursor
# Install for Kiro
observal registry hook install <name> --harness kiro

# Install for Gemini CLI
observal registry hook install <name> --harness gemini-cli

# Install into a specific directory
observal registry hook install <name> --harness claude-code --dir /path/to/project

Expand Down Expand Up @@ -209,13 +206,13 @@ observal agent pull safe-coder --harness claude-code

The registry maps canonical event names to each harness's format:

| Observal Event | Claude Code | Cursor | Kiro | Gemini CLI | Codex CLI |
|----------------|-------------|--------|------|-----------|-----------|
| `PreToolUse` | `PreToolUse` | `preToolUse` | `preToolUse` | `BeforeTool` | `pre_tool_use` |
| `PostToolUse` | `PostToolUse` | `postToolUse` | `postToolUse` | `AfterTool` | `post_tool_use` |
| `Stop` | `Stop` | `sessionEnd` | `stop` | `SessionEnd` | `session_stop` |
| `SessionStart` | `SessionStart` | `sessionStart` | `agentSpawn` | `SessionStart` | - |
| `UserPromptSubmit` | `UserPromptSubmit` | `beforeSubmitPrompt` | `userPromptSubmit` | `BeforeAgent` | `user_prompt_submit` |
| Observal Event | Claude Code | Cursor | Kiro | Codex CLI |
|----------------|-------------|--------|------|-----------|
| `PreToolUse` | `PreToolUse` | `preToolUse` | `preToolUse` | `pre_tool_use` |
| `PostToolUse` | `PostToolUse` | `postToolUse` | `postToolUse` | `post_tool_use` |
| `Stop` | `Stop` | `sessionEnd` | `stop` | `session_stop` |
| `SessionStart` | `SessionStart` | `sessionStart` | `agentSpawn` | - |
| `UserPromptSubmit` | `UserPromptSubmit` | `beforeSubmitPrompt` | `userPromptSubmit` | `user_prompt_submit` |

Install generates the correct format automatically:

Expand All @@ -224,7 +221,6 @@ Install generates the correct format automatically:
observal registry hook install my-hook --harness claude-code # → .claude/settings.json
observal registry hook install my-hook --harness cursor # → .cursor/hooks.json
observal registry hook install my-hook --harness kiro # → ~/.kiro/agents/my-hook.json
observal registry hook install my-hook --harness gemini-cli # → .gemini/settings.json
```

## Timeout Enforcement
Expand Down
7 changes: 0 additions & 7 deletions docs/reference/config-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,6 @@ Use anywhere that accepts `<id-or-name>` by prefixing with `@`.
| `.vscode/mcp.json` | MCP servers (wrapped via `observal-shim`) |
| `AGENTS.md` | Rules loaded into context |

### Gemini CLI

| Path | Purpose |
| --- | --- |
| `.gemini/settings.json` | MCP servers + config |
| `AGENTS.md` / `GEMINI.md` | Rules |

### Codex CLI

| Path | Purpose |
Expand Down
1 change: 0 additions & 1 deletion docs/self-hosting/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,6 @@ cat ~/.kiro/settings/mcp.json # Kiro global
cat ~/.claude/settings.json # Claude Code
cat .cursor/mcp.json # Cursor
cat .vscode/mcp.json # VS Code
cat .gemini/settings.json # Gemini CLI
```

If none exist, configure at least one MCP server in your harness first, then re-run `doctor patch`.
Expand Down
6 changes: 3 additions & 3 deletions docs/use-cases/observe-mcp-traffic.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Spans stream into ClickHouse in near real-time. You query them from the web UI o

## Discover and instrument an existing setup

If you already have MCP servers configured in Claude Code, Kiro, Cursor, VS Code, or Gemini CLI, first see what's there:
If you already have MCP servers configured in Claude Code, Kiro, Cursor, VS Code, or Copilot, first see what's there:

```bash
observal scan
Expand All @@ -35,7 +35,7 @@ observal doctor patch --all --all-harnesses

This:

1. Finds every MCP config file on your machine (`~/.claude/settings.json`, `.kiro/settings/mcp.json`, `.cursor/mcp.json`, `.vscode/mcp.json`, `.gemini/settings.json`).
1. Finds every MCP config file on your machine (`~/.claude/settings.json`, `.kiro/settings/mcp.json`, `.cursor/mcp.json`, `.vscode/mcp.json`, `~/.copilot/mcp-config.json`).
2. Rewrites each config so every server runs through `observal-shim`.
3. Installs telemetry hooks for session lifecycle events.
4. Saves a timestamped `.bak` next to every file it modified.
Expand All @@ -45,7 +45,7 @@ Scope to specific harnesses:
```bash
observal doctor patch --all --harness claude-code
observal doctor patch --all --harness kiro
observal doctor patch --all --harness gemini-cli
observal doctor patch --all --harness copilot-cli
```

## Observability at zero cost to your agents
Expand Down
1 change: 0 additions & 1 deletion docs/use-cases/share-agent-configs.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ Install with one command, pick the harness:
observal agent pull <agent-id> --harness claude-code
observal agent pull <agent-id> --harness kiro
observal agent pull <agent-id> --harness cursor
observal agent pull <agent-id> --harness gemini-cli
observal agent pull <agent-id> --harness vscode
observal agent pull <agent-id> --harness codex
```
Expand Down
1 change: 0 additions & 1 deletion observal-server/services/agent_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
Generates harness-specific agent files from a ResolvedAgent:
- Claude Code: .claude/agents/<name>.md (markdown) + MCP JSON config
- Cursor: .cursor/agents/<name>.md (subagent markdown) + .cursor/mcp.json
- Gemini CLI: GEMINI.md (markdown) + MCP JSON config
- Kiro: ~/.kiro/agents/<name>.json (JSON)
- Codex: ~/.codex/agents/<name>.toml (custom agent)
- GitHub Copilot: .github/copilot-instructions.md (markdown)
Expand Down
2 changes: 1 addition & 1 deletion observal_cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ observal uninstall # tear down Docker, remove
| --------------------------- | ---------------------------- |
| Claude Code | Fully supported |
| Kiro CLI | Supported (next most tested) |
| Cursor, VS Code, Gemini CLI | Untested |
| Cursor, VS Code | Untested |

The `--harness` flag controls which config format is generated. Each harness has its own config paths and JSON structure.

Expand Down
3 changes: 1 addition & 2 deletions observal_cli/skills/observal-advanced/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ Use **only** when a command exits with `Connection failed` or `Not configured`.
| Claude Code | `~/.claude/agents/<name>.md` | `.claude/agents/<name>.md` |
| Kiro | `~/.kiro/agents/<name>.json` | `.kiro/agents/<name>.json` |
| Cursor | `~/.cursor/rules/<name>.mdc` | `.cursor/rules/<name>.mdc` |
| Gemini CLI | `~/.gemini/agents/<name>.md` | `.gemini/agents/<name>.md` |
| VS Code | `~/.config/Code/User/agents/<name>.md` | `.vscode/agents/<name>.md` |
| Codex CLI | `~/.codex/agents/<name>.md` | `.codex/agents/<name>.md` |
| Copilot CLI | `~/.config/github-copilot/agents/<name>.md` | `.github/copilot/agents/<name>.md` |
Expand All @@ -74,7 +73,7 @@ Use **only** when a command exits with `Connection failed` or `Not configured`.
{"name":"<name>","description":"<desc>","prompt":"<prompt>","model":"claude-sonnet-4-20250514","mcpServers":{},"tools":["*"],"resources":["skill://~/.kiro/skills/*/SKILL.md"]}
```

**Claude Code, Gemini CLI, VS Code, Codex CLI, Copilot CLI, OpenCode** (markdown):
**Claude Code, VS Code, Codex CLI, Copilot CLI, OpenCode** (markdown):

```markdown
---
Expand Down
4 changes: 2 additions & 2 deletions observal_cli/skills/observal/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ observal agent pull AGENT_NAME --harness kiro --no-prompt --dir .
```

**Flags:**
- `--harness` (required): `claude-code`, `kiro`, `cursor`, `gemini-cli`, `vscode`, `codex`, `copilot`, `copilot-cli`, `opencode`, `antigravity`, `pi`
- `--harness` (required): `claude-code`, `kiro`, `cursor`, `vscode`, `codex`, `copilot`, `copilot-cli`, `opencode`, `antigravity`, `pi`
- `--version <semver>`: install a specific version (e.g. `1.2.0`). Omit for latest.
- `--scope user|project`: install scope (Claude Code, Kiro, Gemini only)
- `--scope user|project`: install scope for harnesses that support user or project installs
- `--model <name>` or `--model <harness>=<name>`: override saved model (repeatable)
- `--tools t1,t2`: Claude Code tool whitelist
- `--env KEY=VALUE`: MCP environment variable value (repeatable)
Expand Down
2 changes: 0 additions & 2 deletions tests/test_agent_composition.py
Original file line number Diff line number Diff line change
Expand Up @@ -1205,8 +1205,6 @@ def test_cursor_generates_subagent_and_mcp_json(self):

# ── VS Code ────────────────────────────────────────────────

# ── Gemini CLI ─────────────────────────────────────────────

# ── Kiro ───────────────────────────────────────────────────

def test_kiro_generates_agent_json(self):
Expand Down
9 changes: 2 additions & 7 deletions tests/test_agent_config_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,12 +415,7 @@ def test_kiro_agent_profile_truncates_description(self):


# ═══════════════════════════════════════════════════════════════════
# 7. generate_agent_config — Gemini CLI
# ═══════════════════════════════════════════════════════════════════


# ═══════════════════════════════════════════════════════════════════
# 8. generate_agent_config — Codex
# 7. generate_agent_config — Codex
# ═══════════════════════════════════════════════════════════════════


Expand Down Expand Up @@ -449,7 +444,7 @@ def test_content_not_empty(self):


# ═══════════════════════════════════════════════════════════════════
# 9. generate_agent_config — Copilot
# 8. generate_agent_config — Copilot
# ═══════════════════════════════════════════════════════════════════


Expand Down
2 changes: 1 addition & 1 deletion tests/test_harness_config_e2e.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

"""Comprehensive end-to-end tests for issue #434: first-class harness support.

Covers Codex CLI, Gemini CLI, GitHub Copilot (VS Code), and OpenCode across:
Covers Codex CLI, GitHub Copilot (VS Code), and OpenCode across:

1. Server-side config generation (agent_config_generator)
2. CLI pull command (cmd_pull._dict_to_toml, _write_file, full pull flow)
Expand Down
7 changes: 1 addition & 6 deletions tests/test_pull_and_agent_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,12 +281,7 @@ def test_mcp_config_without_path_not_written(self, tmp_path: Path):


# ═══════════════════════════════════════════════════════════════
# 3. Gemini CLI format
# ═══════════════════════════════════════════════════════════════


# ═══════════════════════════════════════════════════════════════
# 4. Kiro format (agent_profile with ~/ path)
# 3. Kiro format (agent_profile with ~/ path)
# ═══════════════════════════════════════════════════════════════


Expand Down
Loading