pi/agent/skills/helpy/SKILL.md
Drive the helpy CLI for live office/web automation — SearXNG web search/fetch, TU Graz TUGonline (lectures, rooms, exams, candidates, Lehrerhebung), ICS feed subscription management, xlsx via excelize (read/write/formulas/recalc/charts/pivots/validation), Nextcloud shares and version history, SAP budget/OData reports, and read-only ops scans. Use whenever the task needs the live web, TUGonline, spreadsheets, ICS feeds, Nextcloud, or SAP. Do not use for generic mail/calendar; use sloptools for those.
npx skillsauth add krystophny/prompts helpyInstall 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.
Local Go binary for office-workflow automation: web search, TUGonline (lecture / room / exam / candidate / Lehrerhebung), spreadsheets (.xlsx via excelize), Nextcloud shares + versions, ICS feed management, and SAP budget reports. The same surface the helpy MCP daemon serves on 127.0.0.1:8090, driven from bash.
Use this skill whenever the user asks for:
web_search, web_fetch)tugonline_*)ics_*)sheet_*)nextcloud_*)sap_*)ops_*)helpy tools list # name<TAB>short-description
helpy tools list --format json # full schema; pipe through jq
helpy tools list --format json | jq '.[] | select(.name | test("sheet_"))'
# whole arguments object
helpy tools call web_search --args '{"query":"qwen3 long context","limit":5}'
# arguments from a file
helpy tools call sheet_set_range --args-file /tmp/sheet-write.json
# key=value (values parse as JSON if they parse, else string)
helpy tools call ics_events --arg days=14 --arg calendar="teaching"
Stdout is structuredContent (preferred) or joined text content. Exit codes: 0 ok, 1 tool error, 2 JSON-RPC / invocation error.
# web search
helpy tools call web_search --args '{"query":"f2py compatibility python 3.14","limit":10}'
# fetch a single URL as readable text
helpy tools call web_fetch --args '{"url":"https://example.invalid/article","max_chars":6000}'
# TUGonline lecture-participant list
helpy tools call tugonline_lecture_search --args '{"query":"plasma physics 2026"}'
# read a workbook range
helpy tools call sheet_read_range --args '{"file":"/tmp/budget.xlsx","sheet":"Sheet1","range":"A1:F40"}'
# create a workbook with a named sheet
helpy tools call sheet_workbook_edit --args '{"file":"/tmp/report.xlsx","op":"create","sheets":["Data"]}'
# recalc engine: auto (cross-sheet + 3D refs handled natively)
helpy tools call sheet_recalc --args '{"file":"/tmp/budget.xlsx","engine":"auto"}'
# SAP budget summary for an order
helpy tools call sap_budget_report --args '{"order":"100xxxxxx","detail":"summary","report":"budget"}'
soffice/LibreOffice, openpyxl, xlsxwriter, pandas.read_excel|ExcelWriter|ExcelFile, exceljs, xlsx-cli, xlsx2csv, hand-rolled zip pipelines.file paths may be under /tmp and must be absolute. Use the JSON key file, not path.helpy tools call sheet_recalc with "engine":"auto" (or "none"); 3D and cross-sheet refs work natively.github.com/sloppy-org/excelize (fork at ~/code/sloppy/excelize, branch 2303-recalc). Do not work around it in Python or shell.helpy tools call web_search is preferred for live info. Keep search limit around 3-5 unless the user asks for breadth; fetch one chosen result with web_fetch.web_search returns { "result": { "query": "...", "results": [...] } }; count results from .result.results | length.sloptools tools call calendar_events for Google/EWS calendars. Use helpy only for explicit ICS feed operations such as ics_list, ics_events, ics_add, and ics_remove.web_fetch defaults to a compact excerpt; pass max_chars only when the task needs a longer page.~/Zotero/zotero.sqlite first, only then fall back to web_search.data-ai
Delegate a bulk-work subtask to the local Qwen via one-shot pi run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
development
Delegate a bulk-work subtask to the local Qwen via one-shot opencode run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
development
ETL pipeline that imports manually-downloaded Discord, LinkedIn, and WhatsApp archive ZIPs into the user's brain vaults as plain files (no APIs, no tokens, no daemons). Use when the task involves processing or querying a Discord/LinkedIn/WhatsApp data export.
tools
The user's email, contacts, personal tasks/todos, and full-CRUD Google + EWS calendars. Drives the sloptools CLI (same surface as the sloppy MCP on 127.0.0.1:9420). Use for mail (Gmail / Exchange-EWS / IMAP — list, read, send, reply, forward, flag, categorize, server-side filters, delegated mailboxes, out-of-office), calendar events (create / update / delete / RSVP / freebusy / ICS export across work + private accounts), contacts and contact groups, tasks (Google Tasks, Todoist), slopshell canvas, agent handoffs, and workspace items/artifacts/actors/triage.