Skip to content
Back to skills

Layout Objects

ASecurity

"Routes LayoutParser coordinate primitives, layout containers,

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
developmentpythongobash

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill layout-objects --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Layout Objects?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Layout Objects
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-layout-objects/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-layout-objects)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: layout-objects
description: "Routes LayoutParser coordinate primitives, layout containers,
  shape operations, and layout-analysis helpers."
metadata:
  disco-role: operating
disable-model-invocation: true
license: Apache 2.0
---

# Layout Objects

Use this sub-skill for geometry-heavy LayoutParser tasks: coordinate
conversion, padding, containment, serialization, sorting, and lightweight line
or category grouping.

## What belongs here

- `Interval`, `Rectangle`, `Quadrilateral`, `TextBlock`, and `Layout`
- relative/absolute coordinate transforms
- `pad`, `shift`, `scale`, `crop_image`
- `union`, `intersect`, `is_in`, `condition_on`, `relative_to`
- `to_dict`, `from_dict`, `to_dataframe`, `get_homogeneous_blocks`
- `generalized_connected_component_analysis_1d`
- `simple_line_detection`
- `group_textblocks_based_on_category`

## What does not belong here

- JSON/CSV/PDF loading and export: use `layout-io`
- `draw_box` / `draw_text`: use `visualization`
- OCR response parsing: use `ocr`
- `lp://` model catalogs or model inference: use `layout-models`

## Read these files

- `references/guide.md` for the class, operation overview, and troubleshooting notes
- `../layout-io/SKILL.md` when the task starts with files or PDFs
- `../visualization/SKILL.md` when the task ends with rendering

## Fast path

1. Identify the shape type on each block.
2. Use the most specific conversion first (`Interval` ↔ `Rectangle` ↔
   `Quadrilateral`).
3. Use `Layout` batch methods for page-wide transforms.
4. Keep `TextBlock` wrappers when the block also carries text or ids.
5. Only approximate quadrilateral shape operations with `strict=False` when a
   bounding-box approximation is acceptable.

## Common user requests

- "Filter the left column"
- "Convert boxes to rectangles"
- "Union the regions"
- "Check whether a token is inside a page block"
- "Sort blocks by reading order"
- "Group the text blocks by line or category"
- "Round-trip a layout to dict or dataframe"

## Minimal smoke

Use the bundled root smoke script when you only need to confirm the geometry
layer and serialization basics:

```bash
python ../../scripts/smoke_layoutparser_core.py
```

## Failure clues

- `InvalidShapeError`: the chosen union/intersection is geometrically invalid.
- `NotSupportedShapeError`: the operation would create a polygonal result that
  LayoutParser cannot represent directly.
- `ValueError` from `Layout(...)`: the input is not an iterable of blocks or is
  already a `Layout` wrapper.
- `ValueError` from `TextBlock.to_interval()`: the axis is missing.

## Output discipline

When answering, give the exact class names and coordinate assumptions that the
future agent should use. If a block should be re-encoded as another shape,
state the destination shape explicitly so the user can follow the conversion.

Files in this skill

  • SKILL.md2.8 KB
  • references/guide.md3.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.