# Filter Semantic

> Filter a list of items to those matching a natural-language condition (e.g. "only the items that mention X"). NOT YET WIRED in chat-mode — present in src/tools/ for future enablement.

- Skill: `bdambrosio/filter-semantic` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add bdambrosio/filter-semantic`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bdambrosio/filter-semantic/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bdambrosio (https://skillmd.com/u/bdambrosio)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bdambrosio/filter-semantic

---


# filter-semantic

Apply a natural-language predicate to each item in a list and return the items that match (or, with `mode: "exclude"`, the items that don't).

**Status:** the tool exists in `src/tools/` but is not yet exposed via the chat ReAct catalog. The list-shape input convention hasn't been settled (chat ReAct passes strings as `$stepN` bindings; the OODA executor passed Collection IDs). When wired, the args contract above will be revised to match the chosen shape.

## Predicate guidance

- Semantic: `"has a positive tone"`, `"contains code or implementation details"`
- Boolean: `"mentions safety AND published after 2024"`
- Numeric / date: `"price under $50"`, `"earlier than 2020"`

Phrase predicates to describe what to **match**. Use `mode: "exclude"` instead of writing negative predicates ("does NOT contain X").

## Why this is different from `assess`

- `assess` operates on **one** text, returns one bool.
- `filter-semantic` operates on **many** texts, returns the subset that match.

One tool call vs N tool calls for the same job.

