Core gws CLI conventions for Founder OS plugins. Use this skill whenever working with any Google Workspace data (Gmail, Calendar, Drive) in any Founder OS plugin. Covers authentication checks, output formatting, error handling, and rate limit awareness.
From founder-osnpx claudepluginhub thecloudtips/founder-os --plugin founder-osThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
The gws CLI tool replaces all Google MCP servers (Gmail, Calendar, Drive) across Founder OS plugins. This skill covers the shared conventions that apply to ALL gws commands regardless of service.
Before any gws operation, verify the CLI is available:
which gws || echo "gws CLI not installed — skipping Google data"
If gws is not found, the plugin MUST degrade gracefully: skip Google data sources, note them as status: "unavailable" in output, and continue with remaining data sources.
Always use --format json for machine-readable output:
gws gmail users messages list --params '{"userId":"me","q":"is:unread","maxResults":10}' --format json
Parse JSON output with jq or inline parsing. Never rely on human-readable text output.
| Exit Code | Meaning | Action |
|---|---|---|
| 0 | Success | Parse JSON output |
| 1 | General error | Log error, degrade gracefully |
| Non-zero | Auth expired, rate limit, network | Retry once after 2s, then degrade |
Check exit codes explicitly:
result=$(gws gmail +triage --max 10 --format json 2>/tmp/gws-error.log)
if [ $? -ne 0 ]; then
echo "Gmail unavailable: $(cat /tmp/gws-error.log)"
# Continue without Gmail data
fi
Google APIs have per-user rate limits. When making many sequential calls:
gws handles authentication automatically via stored credentials. No per-plugin credential configuration is needed. If auth expires, gws will prompt for re-authentication.
--format json and pipe through jq for field extractionstatus: "unavailable" for that data source and continue