# Observe

> Use this skill when the user asks to "check observations", "what did Crawlio see", "show crawl timeline", "query the observation log", or wants to review what happened during a crawl session. Queries the append-only observation log with filtering by host, source, operation, and time range.

- Skill: `crawlio-app/observe` (Agent Skill)
- Install (CLI): `npx skillmds@latest add crawlio-app/observe`
- Raw SKILL.md: https://api.skillmd.com/api/skills/crawlio-app/observe/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: Crawlio-app (https://skillmd.com/u/crawlio-app)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/crawlio-app/observe

---


# observe

Query Crawlio's observation log — the append-only timeline of everything Crawlio observed during a crawl session.

## When to Use

Use this skill when the user wants to:
- See what happened during a crawl
- Review extension captures (framework detection, network requests, console logs)
- Reconstruct a timeline of events
- Find specific observations by host, source, or time range

## Quick Reference

### Get Recent Observations

```
get_observations({ limit: 20 })
```

### Filter by Host

```
get_observations({ host: "example.com", limit: 50 })
```

### Filter by Source

| Source | What It Captures |
|--------|-----------------|
| `extension` | Chrome extension enrichment (framework, network, console, DOM) |
| `engine` | Crawl lifecycle events (crawl_start, crawl_done) |
| `webkit` | WebKit runtime capture |
| `agent` | AI-created findings |

```
get_observations({ source: "extension", limit: 30 })
```

### Filter by Operation

| Op | Meaning |
|----|---------|
| `observe` | Raw data capture |
| `finding` | Agent-created insight |
| `crawl_start` | Crawl began |
| `crawl_done` | Crawl completed |
| `page` | Single page observation |

```
get_observations({ op: "crawl_done" })
```

### Time-Based Query

Use Unix timestamps to query a time range:

```
get_observations({ since: 1708444200, limit: 100 })
```

### Combine Filters

```
get_observations({
  host: "example.com",
  source: "extension",
  op: "observe",
  limit: 50
})
```

## Single Observation Lookup

Look up a specific observation or finding by ID:

```
get_observation({ id: "obs_a1b2c3d4" })
```

Use this to verify evidence referenced by findings, or to inspect the full payload of an `evidenceId` returned by `analyze_page`. Works with both `obs_xxx` (observation) and `fnd_xxx` (finding) IDs.

## Reading Observations

Each observation entry contains:

- **id** — unique identifier (`obs_` prefix for observations, `fnd_` for findings)
- **op** — what type of event this is
- **ts** — ISO 8601 timestamp
- **url** — the URL this relates to
- **source** — what produced this entry
- **data** — composite payload (framework detection, network requests, console logs, progress, etc.)

## Common Patterns

### Timeline Reconstruction
Query by host with no limit to see the full story of a crawl:
```
get_observations({ host: "example.com" })
```

### Crawl Summary
Get start and end events to see crawl performance:
```
get_observations({ op: "crawl_start" })
get_observations({ op: "crawl_done" })
```
The `crawl_done` entry includes progress data (totalDiscovered, downloaded, failed).

### Extension Audit
See everything the Chrome extension captured:
```
get_observations({ source: "extension", limit: 200 })
```

### Evidence Chain Verification
Verify evidence referenced by a finding:
```
get_observation({ id: "obs_a1b2c3d4" })
```
This returns the full observation entry. Use it to confirm that evidence IDs in findings actually support the claimed insight.

### After Observation — Create Findings
Once you've identified patterns in observations, use the `finding` skill to record insights with evidence chains.

