# Environment Discovery

Systematic exploration of unknown environments before starting work

- Repository: https://github.com/vstorm-co/pydantic-deepagents (1111 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add vstorm-co/pydantic-deepagents --skill environment-discovery -g -a claude-code -y`
Codex: `npx skills add vstorm-co/pydantic-deepagents --skill environment-discovery -g -a codex -y`
Cursor: `npx skills add vstorm-co/pydantic-deepagents --skill environment-discovery -g -a cursor -y`
Gemini CLI: `npx skills add vstorm-co/pydantic-deepagents --skill environment-discovery -g -a gemini-cli -y`

## Description

Systematic exploration of unknown environments before starting work

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Environment Discovery

When dropped into an unfamiliar environment, ALWAYS explore before acting.

## Step 1: Understand the workspace

```
ls -la /app/          # or the working directory
find . -type f | head -50
```

- What files exist? What are their sizes?
- Are there READMEs, Makefiles, config files?
- What languages/frameworks are involved?

## Step 2: Inspect data files

Before writing any code that reads data, understand the format:

- `file <filename>`, detect file type (binary, text, encoding)
- `head -20 <file>`, first lines of text files
- `xxd <file> | head -20`, hex dump for binary files
- `wc -l <file>`, line count for text files
- `stat <file>`, exact file size in bytes
- `python3 -c "import struct; ..."`, parse binary headers

## Step 3: Check available tools

```
which python3 gcc g++ make cmake node npm cargo rustc java go
pip list 2>/dev/null | head -20
```

- What compilers/interpreters are installed?
- What libraries are available?
- What package managers can you use?

## Step 4: Read existing code

If there are existing source files:
- Read them FULLY before modifying
- Understand the build system (Makefile, CMakeLists.txt, pyproject.toml)
- Check for existing tests

## Key Principles

- NEVER assume file formats, always inspect first
- NEVER assume tools are installed, always check
- A 500MB file is NOT a "small file", plan for it
- Binary files need byte-level inspection, not `cat`
- Spend 30 seconds exploring to save 5 minutes debugging

