GWS JSON Filter
Filter large GWS CLI JSON responses (calendar events, emails, etc.) by specific fields like title, attendee, date.
Skill by agentsfusion
Chalk Labs
Need help deploying GWS JSON Filter?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/agentsfusion-gws-json-filter
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: ml, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/gws-json-filter
What's inside
- Skill name
GWS JSON Filter- Description
- Filter large GWS CLI JSON responses (calendar events, emails, etc.) by specific fields like title, attendee, date. Prevents LLM context overflow by extracting only matching items programmatically.
- License
- MIT
- Instructions
- 225 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
- name: "GWS JSON Filter" does not match folder "gws-json-filter"
Files (1)
- SKILL.md
SKILL.md (first lines)
# GWS JSON Filter
## When to Use
Use this skill whenever a `gws` CLI command returns a large JSON response and you need to find specific items. **Do NOT visually scan large JSON output** — use `execute_code` to filter programmatically.
Common scenarios:
- Find calendar events by title/summary (e.g. "find all events named TrailblazerDX")
- Find calendar events by attendee email
- Find calendar events within a date range
- Find emails by subject or sender
- Any `gws` response with more than ~10 items
## ⚠️ Two-Step Pattern (MUST follow)
`python3 -c` is blocked in bash mode. You **MUST** use two separate `execute_code` calls. Both calls share the same working directory (`workspace/`), so files persist between calls.
### Step 1 — Fetch and save to file (`execute_code(language="bash")`)
Use shell redirect `>` to save gws output to a file. Do **NOT** use the gws `-o` flag — it may fail silently.
**⚠️ NEVER use `set -e` in the bash script.** Always start with `set +e` to prevent the script from aborting on non-zero exit codes. The gws command may return non-zero even on partial success, and `set -e` will kill the script before the status check runs.
```bash
set +e
gws calendar events list --params '{"calendarId":"primary","q":"keyword"}' > _events_raw.json 2>&1
echo "OK: saved to _events_raw.json"
```
**Check the output!** If Step 1 shows a gws error, do NOT proceed to Step 2 — fix the gws command first.
The `q` parameter does a broad text search (matches summary, description, location). Use it to pre-filter when possible.
For paginated results, add `--page-all`:
```bash
set +e
gws calendar events list --params '{"calendarId":"primary"}' --page-all > _events_raw.json 2>&1
echo "OK"
```
**Important:** `>` redirects stdout to the file. The gws JSON output goes into the file instead of printing to the terminal, keeping your context clean.
### Step 2 — Filter with Python (`execute_code(language="python")`)
**Only proceed if Step 1 printed "OK".**
All examples below automatically **skip cancelled/deleted events** by filtering on the `status` field. Google Calendar events have `status` = `confirmed`, `tentative`, or `cancelled`. Only `confirmed` and `tentative` are active events.
#### Common helper — parse JSON file and filter out inactive events:
Every filter script should start with this pattern:
```python
import json, os, sys
filepath = '_events_raw.json'
if not os.path.exists(filepath):
print(f"ERROR: {filepath} not found. Step 1 (gws command) likely failed.")
sys.exit(1)
with open(filepath) as f:
content = f.read().strip()
if content.startswith('{'):
raw_items = json.loads(content).get('items', [])
else:
raw_items = []
for line in content.splitlines():
line = line.strip()
if line:
raw_items.extend(json.loads(line).get('items', []))
INACTIVE_STATUSES = {'cancelled', 'deleted'}
items = [e for e in raw_items if e.get('status', '').lower() not in INACTIVE_STATUSES]
print(f"Loaded {len(raw_items)} total event(s), {len(raw_items) - len(items)} cancelled/deleted, {len(items)} active.")
```
#### Filter by title (summary):
```python
import json, os, sys
filepath = '_events_raw.json'
if not os.path.exists(filepath):
print(f"ERROR: {filepath} not found. Step 1 (gws command) likely failed.")
sys.exit(1)
with open(filepath) as f:
content = f.read().strip()
if content.startswith('{'):
raw_items = json.loads(content).get('items', [])
else:
raw_items = []
for line in content.splitlines():
line = line.strip()
if line:
raw_items.extend(json.loads(line).get('items', []))
INACTIVE_STATUSES = {'cancelled', 'deleted'}
items = [e for e in raw_items if e.get('status', '').lower() not in INACTIVE_STATUSES]
print(f"Loaded {len(raw_items)} total, {len(raw_items) - len(items)} inactive, {len(items)} active.")
keyword = "TrailblazerDX"
matches = [e for e in items if keyword.lower() in e.get('summary', '').lower()]
for e in matches:
print(f"ID: {e['id']}")
print(f" Title: {e.get('summary','')}")
print(f" Status: {e.get('status','')}")
print(f" Start: {e.get('start',{}).get('dateTime','')}")
print(f" Attendees: {[a.get('email','') for a in e.get('attendees',[])]}")
print()
print(f"Found {len(matches)} matching active event(s).")
os.remove(filepath)
```
#### Filter by attendee email:
```python
import json, os, sysFrom agentsfusion/WorkMagicSkills, MIT.
More from agentsfusion/WorkMagicSkills
- 0.409score
gws-calendar-update
agentsfusion
Google Calendar: Update or patch an existing event.
SkillDFreshness: DClaude Code +9 - 0.409score
gws-gmail-sent
agentsfusion
Gmail: View sent email and reply content.
SkillDFreshness: DClaude Code +9 - 0.401score
gws-gmail
agentsfusion
Gmail: Send, read, and manage email.
SkillDFreshness: DClaude Code +9 - 0.214score
_template
agentsfusion
No description from the publisher yet.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 19, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/agentsfusion/WorkMagicSkills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from agentsfusion
- 0.409score
gws-calendar-update
agentsfusion
Google Calendar: Update or patch an existing event.
SkillDFreshness: DClaude Code +9 - 0.409score
gws-gmail-sent
agentsfusion
Gmail: View sent email and reply content.
SkillDFreshness: DClaude Code +9 - 0.401score
gws-gmail
agentsfusion
Gmail: Send, read, and manage email.
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get GWS JSON Filter running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
GWS JSON Filter skill. Agent Mart. https://agentmart.dev/skills/agentsfusion-gws-json-filter (last updated 2026-10-24)