json-data-extraction

A guide to reading, filtering, searching, and combining information stored in JSON files, a common text format for structured data.

In plain words
What is it for?
It is for extracting employee records, searching message histories, finding document links, and aggregating data from multiple JSON sources.
Why use it?
It removes the need to manually inspect large enterprise files when you need particular records or relationships.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/cxcscmu/skilllearnbench/json-data-extraction
Any agent
npx skills add cxcscmu/SkillLearnBench --skill json-data-extraction
Clone the repo
git clone --depth 1 https://github.com/cxcscmu/SkillLearnBench

Made for: Claude Code, Codex.

Per session 18 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 881 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00018 $0.00881
Opus 5 $0.00009 $0.00441
Sonnet 5 $0.00004 $0.00176
Haiku 4.5 $0.00002 $0.00088

Measured 2d ago against content hash 3cf75bdfb7ba, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

json-data-extraction scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/b1-one-shot-claude-haiku-4-5/enterprise-information-search/json-data-extraction/SKILL.md · 121 lines

How it starts

The opening of the file, as written. The whole thing — 121 lines — stays where its author put it; the contents beside it link to each section on GitHub.

JSON Data Extraction from Enterprise Data

Overview

This skill covers parsing and extracting information from large JSON files containing enterprise data like employee records, Slack messages, and product metadata.

Use Cases

  • Extracting specific fields from employee databases
  • Searching through Slack message histories for mentions or keywords
  • Finding relationships between employees and documents/reports
  • Aggregating data across multiple JSON sources

Installation & Setup

# Python has built-in json module, no installation needed
python3 -c "import json; print('JSON module available')"

Code Examples

Basic JSON Loading

import json

with open('/root/DATA/metadata/employee.json', 'r') as f:
    employee_data = json.load(f)

# Access specific employee
employee = employee_data.get('eid_1e9356f5', {})

Extracting Data with Filters

import json

with open('/root/DATA/products/ContentForce.json', 'r') as f:
    product_data = json.load(f)

# Extract Slack messages mentioning specific employee
messages = product_data.get('slack', [])
for msg in messages:
    if 'Market Research Report' in msg.get('Message', {}).get('text', ''):
        print(msg)

Extracting IDs from Text

import re

def extract_employee_ids(text):
    """Extract employee IDs (format: eid_xxxxxxxx) from text"""
    pattern = r'eid_[a-f0-9]{8}'
    return re.findall(pattern, text)

# Usage
text = "@eid_1e9356f5 created this channel. @eid_06cddbb3 joined."
ids = extract_employee_ids(text)  # Returns ['eid_1e9356f5', 'eid_06cddbb3']

Finding Report Authors and Reviewers

import json
import re

def find_report_authors_and_reviewers(product_json_path, report_name):
    """Find employees who authored/reviewed a report"""
    with open(product_json_path, 'r') as f:
        data = json.load(f)

    authors = set()
    reviewers = set()

    messages = data.get('slack', [])
    for msg in messages:
        text = msg.get('Message', {}).get('text', '')
        if report_name.lower() in text.lower():
            # Author: person sharing the report
            author_id = msg.get('Message', {}).get('User', {}).get('userId')
            if author_id and author_id.startswith('eid_'):
                authors.add(author_id)

            # Reviewers: people responding in thread
            for reply in msg.get('ThreadReplies', []):
                reviewer_id = reply.get('User', {}).get('userId')
                if reviewer_id and reviewer_id.startswith('eid_'):
                    reviewers.add(reviewer_id)

    return list(authors), list(reviewers)

Read the full file on GitHub · 121 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 121 lines · 18 tokens per session scan A 3cf75bdfb7ba

Subscribe to this mod's changes

json-data-extraction is a skill published in the GitHub repository cxcscmu/SkillLearnBench (82 stars, last pushed 1mo ago), licensed MIT. It adds 18 tokens to every session and 881 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

Context Doctor

Identify and repair degradation in system prompt, external memory, and skills preventing you from following instructions or remembering information as well as you should.

letta-ai/letta-code · 30 tokens

managing-shared-memory

Create and manage shared memory — git-tracked repositories hosted on Letta Cloud that are attached to one or more agents and projected into their filesystems. Use when the user wants to share memory or files across agents, store context outside your own MemFS, attach or detach shared memory, or inspect its file…

letta-ai/letta-code · 69 tokens

adding-models

Guide for adding new LLM models to Letta Code. Use when the user wants to add support for a new model, needs to know valid model handles, or wants to update model-specific compatibility behavior. Covers runtime catalog sources, CI test matrices, and handle validation.

letta-ai/letta-code · 58 tokens

migrating-memory

Migrate memory blocks from an existing agent to the current agent. Use when the user wants to copy or share memory from another agent, or during /init when setting up a new agent that should inherit memory from an existing one.

letta-ai/letta-code · 51 tokens

using-mcp-tools

Reference for the letta mcp CLI, which finds and invokes MCP tools available to this agent. A system reminder already lists your connected MCP servers and the basic search/schema/call commands; invoke this skill when you need more — browsing a server's tools, passing large or file-based arguments, tuning search, or…

letta-ai/letta-code · 79 tokens

submitting-feedback

Submits user-approved feedback about Letta Code or the current agent to the Letta team. Load when the user is upset, frustrated, dissatisfied, reports poor agent behavior, or asks to send feedback. Works with cloud-hosted and local agents. Ask before submitting unless the user already explicitly requested submission.

letta-ai/letta-code · 65 tokens