home / skills / bdambrosio / cognitive_workbench / mc-observe-blocks

mc-observe-blocks skill

/src/tools_out/mc-observe-blocks

This skill observes visible non-air blocks within a limited radius and cone to aid navigation and movement planning.

npx playbooks add skill bdambrosio/cognitive_workbench --skill mc-observe-blocks

Review the files below or copy the command above to add this skill to your agents.

Files (2)
Skill.md
3.1 KB
---
name: mc-observe-blocks
type: python
description: "Visible non-air blocks within radius R (default/max 7). Filtered by forward cone (yaw ±60°, pitch -60..+90) and line-of-sight. Does NOT report items."
---

# Minecraft Observe Blocks Tool

Enumerates all visible non-air blocks within observation radius. Provides structured summary with pose, directional distances, footing, clearance, geometry hints, and movement affordances.

## Purpose
Visible block observation for spatial awareness and movement planning. Returns both human-readable SUMMARY text and machine-readable structured data.

## Input
- `radius`: Optional integer observation radius (default: `7`, max: `7`)
- `blocks_radius`: Optional integer observation radius (default: `7`, max: `7`). If both provided, `blocks_radius` takes precedence.
- `value`: Ignored

## Output
Returns uniform_return format with:
- `value`: Multi-line SUMMARY text (human-readable, ≤ 1024 chars)
- `data`: Structured observation dict (machine-readable). Key fields:
  - `success`: boolean
  - `pose`: `{x, y, z, yaw, pitch}` (floats)
  - `dirs`: Per-direction info (`fwd`, `back`, `left`, `right`, `up`, `down`). Each has `dist` (float | null) and `blk` (string | null)
  - `support`: `{here: {type: "solid"|"unsafe", block, depth}, fwd: {type: "solid"|"unsafe", block, depth, forward_block}}`
  - `clear`: `{fwd: {body: bool, head: bool}, up: {body: bool, head: bool}}`
  - `blocks`: `{seen: [string], fluid: [string], hazard: [string], nearby: [dict]}` (nearby is exhaustive raw list)
    - Each entry in `blocks.nearby` includes: `name`, `position`, `dx`, `dy`, `dz`, `surface` (true|false|\"unknown\")
  - `nav_surface`: Navigation-first surface samples for nearby cells: list of `{x, z, support_y, support_block, walkable, cover_block, dx, dz}`
  - `geom`: `{pit: bool, stair: bool, slope: bool}`
  - `aff`: `{step: bool, jump: bool, descend: bool, sky: bool}`
  - `conf`: `"high"` | `"med"` | `"low"`
  - `note`: string (human-readable summary)

## Behavior & Performance
- Navigation-first: uses a capped forward-cone cell scan with short vertical probes to infer `support_y`/walkable; synthesized `blocks.nearby` is lightweight
- View cone: Only reports blocks within a 120° horizontal cone (yaw ±60°) and vertical range up 60° / down 90° (relative to pitch 0)
- Line-of-sight: Not a rendering-accurate visibility model; tuned for navigation surfaces (non-supporting cover should not hide support)
- Radius limits: Default 7 blocks, maximum 7 blocks
- Confidence levels: `high` (complete, fast), `med` (complete but slow/many blocks), `low` (incomplete observation)

## Guidelines
- Use `mc-observe-items` for dropped item entities (this tool only reports blocks)
- `support.here` and `support.fwd` indicate safe footing for movement planning
- `aff.step`, `aff.jump`, `aff.descend` provide movement affordances
- `conf=low` indicates incomplete observation - may need retry or larger radius
- Raw exhaustive data stored in `data.blocks.nearby` for detailed analysis

## Usage Examples

Standard observation:
```json
{"type":"mc-observe-blocks","out":"$obs"}
```

With custom radius:
```json
{"type":"mc-observe-blocks","radius":5,"out":"$obs"}
```

Overview

This skill inspects visible non-air blocks around the agent within a capped radius (default and max 7) and returns both a human-readable summary and a structured observation dictionary. It focuses on navigation-relevant information: pose, per-direction distances, support surfaces, clearance, nearby block list, geometric hints, and movement affordances. It does not report dropped item entities.

How this skill works

The skill performs a cone-limited scan (120° horizontal, +60° up, -90° down) and applies short vertical probes to infer support surfaces and walkability. Results are filtered by a line-of-sight model tuned for navigation (non-supporting cover does not obscure potential support). Output includes a multi-line SUMMARY and a machine-readable data object with pose, per-direction block info, support estimates, clearance checks, nearby raw block entries, navigation surface samples, geometry flags, affordances, and a confidence level.

When to use it

  • Planning short-range movement or path steps near the agent
  • Assessing whether the block in front provides safe footing or an obstacle
  • Detecting nearby hazards, fluids, or low-clearance passages
  • Sampling surrounding surfaces for navigation or AI locomotion logic
  • Quick situational checks before jumping, stepping, or descending

Best practices

  • Keep radius at or below 7 (default) — the skill caps at 7 for consistent performance
  • Use support.here and support.fwd to decide safe footsteps or next-position targets
  • Combine with mc-observe-items when you need dropped item entities (this tool omits items)
  • Retry or increase sensing frequency if conf == "low" to recover missing data
  • Prefer the structured data.blocks.nearby for exact positions and the SUMMARY for quick human inspection

Example use cases

  • Agent checking forward cell for a safe step and required jump height before moving
  • Navigation system sampling nearby cells to build walkable surface candidates
  • AI deciding whether to crouch or skip a low-clearance tunnel using clear and geom flags
  • Safety check to detect nearby fluids or hazards and avoid stepping into them
  • Generating a short human-readable situational SUMMARY for debugging or logging

FAQ

Does this report dropped items?

No. This tool only reports blocks. Use mc-observe-items to list dropped item entities.

What does conf mean?

conf indicates observation completeness: "high" = complete and fast, "med" = complete but slower, "low" = incomplete and may require retrying or different sensing parameters.

How is support determined?

Support is inferred by short vertical probes and a navigation-first cell scan that estimates support_y, support_block, and walkability for nearby cells; support.here and support.fwd summarize footing for current and forward positions.