.agents/skills/structured-data/SKILL.md
Patterns for extracting and processing structured data from CLI tools. Use jq for JSON, yq for YAML, and md-tree for Markdown. Apply these patterns instead of manual parsing to reduce token usage and improve clarity.
npx skillsauth add em-jones/staccato-toolkit structured-dataInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use these tools for all structured data operations. Avoid manual parsing with grep/awk/sed.
jq — JSONParse JSON output from CLI tools:
# Extract a single field
openspec status --change "my-change" --json | jq -r '.schemaName'
# Extract array elements
openspec list --json | jq -r '.[].name'
# Conditional check (exit 1 if empty)
td ls --ancestor <id> --status open --json | jq -e 'length > 0'
# Filter and transform
td ls --board "<board>" --json | jq -r '.[] | select(.status == "open") | .id + " " + .title'
yq — YAMLRead YAML frontmatter and entity files:
# Read a frontmatter field from a markdown file
yq -r '.td-board' openspec/changes/my-change/proposal.md
# Read a field from a catalog entity
yq -r '.metadata.name' .entities/component-platform.yaml
# List all entity names
for f in .entities/*.yaml; do
yq -r '"\(.kind): \(.metadata.name)"' "$f"
done
# Check if a field exists
yq -r '.component // empty' openspec/changes/my-change/design.md
md-tree — MarkdownExtract sections from markdown files by heading. Use this instead of grep for markdown content.
The read-from-md-link skill demonstrates the canonical pattern:
# Extract a section by heading name
md-tree extract README.md "Vision"
# Extract from a change artifact
md-tree extract openspec/changes/my-change/design.md "Technology Adoption & Usage Rules"
# Extract from a spec
md-tree extract openspec/changes/my-change/specs/api/spec.md "Requirements"
Link format shorthand: README.md#Vision → md-tree extract README.md "Vision"
| Data source | Tool |
|---|---|
| openspec CLI output | jq |
| td CLI output (--json) | jq |
| YAML entity files (.entities/) | yq |
| Markdown frontmatter | yq |
| Markdown section content | md-tree extract |
| devbox.json, package.json | jq |
| go.mod | grep (no structured tool; direct text) |
--json / -o yaml flags when available on CLI toolsjq -r (raw output, no quotes) for string values; omit -r when piping JSON to next commandyq -r for scalar values; omit -r when the output will be further processed as YAMLmd-tree extract returns the full subtree under the heading — pipe to md-tree again to narrow further if neededcat + manual parsing when a structured tool is availabletools
<!--VITE PLUS START--> # Using Vite+, the Unified Toolchain for the Web This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`. ## Vite+ Workflow `vp` is a global binary that handles the full development lifecycle. Run `vp help` to pr
development
Guide for building performant data tables. Uses tanstack-table for table logic (sorting, filtering, pagination) and tanstack-virtual for rendering large datasets efficiently.
development
Expert guidance for building observable, expressive, and fault-tolerant TypeScript applications using the effect-ts/effect ecosystem. Covers Effect<A, E, R> type, error management, dependency injection via Layers, observability (logging, metrics, tracing), concurrency with Fibers, retry/scheduling, Schema validation, Streams, and Sinks.
tools
Complete E2E (end-to-end) and integration testing skill for TypeScript/NestJS projects using Jest, real infrastructure via Docker, and GWT pattern. ALWAYS use this skill when user needs to: **SETUP** - Initialize or configure E2E testing infrastructure: - Set up E2E testing for a new project - Configure docker-compose for testing (Kafka, PostgreSQL, MongoDB, Redis) - Create jest-e2e.config.ts or E2E Jest configuration - Set up test helpers for database, Kafka, or Redis - Configure .env.e2e environment variables - Create test/e2e directory structure **WRITE** - Create or add E2E/integration tests: - Write, create, add, or generate e2e tests or integration tests - Test API endpoints, workflows, or complete features end-to-end - Test with real databases, message brokers, or external services - Test Kafka consumers/producers, event-driven workflows - Working on any file ending in .e2e-spec.ts or in test/e2e/ directory - Use GWT (Given-When-Then) pattern for tests **REVIEW** - Audit or evaluate E2E tests: - Review existing E2E tests for quality - Check test isolation and cleanup patterns - Audit GWT pattern compliance - Evaluate assertion quality and specificity - Check for anti-patterns (multiple WHEN actions, conditional assertions) **RUN** - Execute or analyze E2E test results: - Run E2E tests - Start/stop Docker infrastructure for testing - Analyze E2E test results - Verify Docker services are healthy - Interpret test output and failures **DEBUG** - Fix failing or flaky E2E tests: - Fix failing E2E tests - Debug flaky tests or test isolation issues - Troubleshoot connection errors (database, Kafka, Redis) - Fix timeout issues or async operation failures - Diagnose race conditions or state leakage - Debug Kafka message consumption issues **OPTIMIZE** - Improve E2E test performance: - Speed up slow E2E tests - Optimize Docker infrastructure startup - Replace fixed waits with smart polling - Reduce beforeEach cleanup time - Improve test parallelization where safe Keywords: e2e, end-to-end, integration test, e2e-spec.ts, test/e2e, Jest, supertest, NestJS, Kafka, Redpanda, PostgreSQL, MongoDB, Redis, docker-compose, GWT pattern, Given-When-Then, real infrastructure, test isolation, flaky test, MSW, nock, waitForMessages, fix e2e, debug e2e, run e2e, review e2e, optimize e2e, setup e2e