agent-tools

$npx mdskill add EliasOulkadi/shokunin/agent-tools

Run 150+ AI apps via inference.sh CLI without a GPU.

  • Generates images, videos, and 3D content on demand.
  • Depends on inference.sh CLI and cloud-hosted AI models.
  • Selects the appropriate model based on the user's request.
  • Returns generated content or API responses directly to the user.

SKILL.md

.github/skills/agent-toolsView on GitHub ↗
---
name: agent-tools
description: "Run 150+ AI apps via inference.sh CLI - image generation, video creation, LLMs, search, 3D, Twitter automation. Models: FLUX, Veo, Gemini, Grok, Claude, Seedance, OmniHuman, Tavily, Exa, OpenRouter, and many more. Use when running AI apps, generating images/videos, calling LLMs, web search, or automating Twitter. Triggers: inference.sh, infsh, ai model, run ai, serverless ai, ai api, flux, veo, claude api, image generation, video generation, openrouter, tavily, exa search, twitter api, grok"
triggers:
  - "inference.sh"
  - "infsh"
  - "FLUX"
  - "Veo"
  - "Gemini"
  - "Grok"
  - "Claude API"
  - "image generation"
  - "video generation"
  - "OpenRouter"
  - "Tavily"
  - "Exa"
  - "search API"
  - "AI model"
  - "run AI"
  - "serverless AI"
  - "Twitter API"
  - "social media automation"
negatives:
  - "local model"
  - "Ollama"
  - "vector search"
  - "memory"
  - "ChromaDB"
license: MIT
compatibility: opencode
allowed-tools: Bash(infsh *)
metadata:
  version: "1.0.0"

  workflow: ai-agents
  audience: developers
---


# [inference.sh](https://inference.sh)

Run 150+ AI apps in the cloud with a simple CLI. No GPU required.

![[inference.sh](https://inference.sh)](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kgjw8atdxgkrsr8a2t5peq7b.jpeg)

## Install CLI

```bash
curl -fsSL https://cli.inference.sh | sh
infsh login
```

> **What does the installer do?** The [install script](https://cli.inference.sh) detects your OS and architecture, downloads the correct binary from `dist.inference.sh`, verifies its SHA-256 checksum, and places it in your PATH. That's it — no elevated permissions, no background processes, no telemetry. If you have [cosign](https://docs.sigstore.dev/cosign/system_config/installation/) installed, the installer also verifies the Sigstore signature automatically.
>
> **Manual install** (if you prefer not to pipe to sh):
> ```bash
> # Download the binary and checksums
> curl -LO https://dist.inference.sh/cli/checksums.txt
> curl -LO $(curl -fsSL https://dist.inference.sh/cli/manifest.json | grep -o '"url":"[^"]*"' | grep $(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/') | head -1 | cut -d'"' -f4)
> # Verify checksum
> sha256sum -c checksums.txt --ignore-missing
> # Extract and install
> tar -xzf inferencesh-cli-*.tar.gz
> mv inferencesh-cli-* ~/.local/bin/inferencesh
> ```

## Quick Examples

```bash
# Generate an image
infsh app run falai/flux-dev-lora --input '{"prompt": "a cat astronaut"}'

# Generate a video
infsh app run google/veo-3-1-fast --input '{"prompt": "drone over mountains"}'

# Call Claude
infsh app run openrouter/claude-sonnet-45 --input '{"prompt": "Explain quantum computing"}'

# Web search
infsh app run tavily/search-assistant --input '{"query": "latest AI news"}'

# Post to Twitter
infsh app run x/post-tweet --input '{"text": "Hello from AI!"}'

# Generate 3D model
infsh app run infsh/rodin-3d-generator --input '{"prompt": "a wooden chair"}'
```

## Local File Uploads

The CLI automatically uploads local files when you provide a path instead of a URL:

```bash
# Upscale a local image
infsh app run falai/topaz-image-upscaler --input '{"image": "/path/to/photo.jpg", "upscale_factor": 2}'

# Image-to-video from local file
infsh app run falai/wan-2-5-i2v --input '{"image": "./my-image.png", "prompt": "make it move"}'

# Avatar with local audio and image
infsh app run bytedance/omnihuman-1-5 --input '{"audio": "/path/to/speech.mp3", "image": "/path/to/face.jpg"}'

# Post tweet with local media
infsh app run x/post-create --input '{"text": "Check this out!", "media": "./screenshot.png"}'
```

## Commands

| Task | Command |
|------|---------|
| List all apps | `infsh app list` |
| Search apps | `infsh app list --search "flux"` |
| Filter by category | `infsh app list --category image` |
| Get app details | `infsh app get google/veo-3-1-fast` |
| Generate sample input | `infsh app sample google/veo-3-1-fast --save input.json` |
| Run app | `infsh app run google/veo-3-1-fast --input input.json` |
| Run without waiting | `infsh app run <app> --input input.json --no-wait` |
| Check task status | `infsh task get <task-id>` |

## What's Available

| Category | Examples |
|----------|----------|
| **Image** | FLUX, Gemini 3 Pro, Grok Imagine, Seedream 4.5, Reve, Topaz Upscaler |
| **Video** | Veo 3.1, Seedance 1.5, Wan 2.5, OmniHuman, Fabric, HunyuanVideo Foley |
| **LLMs** | Claude Opus/Sonnet/Haiku, Gemini 3 Pro, Kimi K2, GLM-4, any OpenRouter model |
| **Search** | Tavily Search, Tavily Extract, Exa Search, Exa Answer, Exa Extract |
| **3D** | Rodin 3D Generator |
| **Twitter/X** | post-tweet, post-create, dm-send, user-follow, post-like, post-retweet |
| **Utilities** | Media merger, caption videos, image stitching, audio extraction |

## Related Skills

```bash
# Image generation (FLUX, Gemini, Grok, Seedream)
npx skills add inference-sh/skills@ai-image-generation

# Video generation (Veo, Seedance, Wan, OmniHuman)
npx skills add inference-sh/skills@ai-video-generation

# LLMs (Claude, Gemini, Kimi, GLM via OpenRouter)
npx skills add inference-sh/skills@llm-models

# Web search (Tavily, Exa)
npx skills add inference-sh/skills@web-search

# AI avatars & lipsync (OmniHuman, Fabric, PixVerse)
npx skills add inference-sh/skills@ai-avatar-video

# Twitter/X automation
npx skills add inference-sh/skills@twitter-automation

# Model-specific
npx skills add inference-sh/skills@flux-image
npx skills add inference-sh/skills@google-veo

# Utilities
npx skills add inference-sh/skills@image-upscaling
npx skills add inference-sh/skills@background-removal
```

## Reference Files

- [Authentication & Setup](references/authentication.md)
- [Discovering Apps](references/app-discovery.md)
- [Running Apps](references/running-apps.md)
- [CLI Reference](references/cli-reference.md)

## Documentation

- [Agent Skills Overview](https://inference.sh/blog/skills/skills-overview) - The open standard for AI capabilities
- [Getting Started](https://inference.sh/docs/getting-started/introduction) - Introduction to inference.sh
- [What is inference.sh?](https://inference.sh/docs/getting-started/what-is-inference) - Platform overview
- [Apps Overview](https://inference.sh/docs/apps/overview) - Understanding the app ecosystem
- [CLI Setup](https://inference.sh/docs/extend/cli-setup) - Installing the CLI
- [Workflows vs Agents](https://inference.sh/blog/concepts/workflows-vs-agents) - When to use each
- [Why Agent Runtimes Matter](https://inference.sh/blog/agent-runtime/why-runtimes-matter) - Runtime benefits

## Workflow

1. **Discover** — `infsh app list --search "<keyword>"` or `infsh app list --category <image|video|llm|search|3d|x|utility>` to find the right app
2. **Inspect** — `infsh app get <app-id>` for description, pricing, input schema, and rate limits
3. **Generate sample input** — `infsh app sample <app-id> --save input.json` to get a valid input template pre-filled with defaults
4. **Customize** — edit the JSON input file: replace prompts, file paths, or configuration values
5. **Run** — `infsh app run <app-id> --input input.json` for synchronous execution, or `--no-wait` for long-running tasks
6. **Check status** — `infsh task get <task-id>` to poll progress of async tasks; `infsh task logs <task-id>` for streaming output
7. **Retrieve output** — outputs are URLs (images, videos) or text responses; download with `infsh task download <task-id>`

For multi-step pipelines, chain apps: run the first app, extract its output URL, feed it as input to the next app (e.g., generate image → upscale, or generate video → add audio).

## Error Handling

| Error | Cause | Fix |
|-------|-------|-----|
| `infsh: command not found` | CLI not installed or not in PATH | Run `curl -fsSL https://cli.inference.sh | sh` or check PATH includes the install directory |
| `401 Unauthorized` | Not logged in or token expired | Run `infsh login` and re-authenticate |
| `402 Payment Required` | Account has no credits or payment method | Check `infsh billing`; add credits via inference.sh dashboard |
| `429 Too Many Requests` | Rate limit exceeded for the app or account tier | Wait for the `Retry-After` header duration; for paid tiers, request a limit increase |
| `400 Bad Request` on file upload | File path does not exist, is a directory, or exceeds size limits | Verify the file path with `ls -la`; check the app's max input size in `infsh app get <app-id>` |
| `Task timed out` (HTTP 504 or task status `failed`) | App execution exceeded max duration | Check `infsh task get <task-id>` for error details; retry with smaller input or check app status page |
| `502 Bad Gateway` or connection errors | inference.sh backend or model provider is down | Check https://status.inference.sh; retry with exponential backoff (2s, 4s, 8s) |
| Output URL returns 404 | Generated asset expired (files are ephemeral) | Re-run the job; for permanent storage, download immediately with `infsh task download <task-id>` |
| JSON parse error on `--input` | Input file is not valid JSON or schema mismatch | Use `infsh app sample <app-id> --save input.json` to regenerate a valid template |
| Image/video generation produces blank or corrupted output | Model inference failed silently | Re-run the job; check app-specific known issues in `infsh app get <app-id>`; try a different model for the same task |

## Checklist

- [ ] App is authenticated before running (`infsh login check`)
- [ ] Model supports the requested input format (image/video/text sizes)
- [ ] Task ID saved for async operations to retrieve results later
- [ ] Credit cost checked before bulk operations
- [ ] Output format confirmed (URL, file, or stdout) before passing to next step

## Sources

- [inference.sh CLI documentation](https://cli.inference.sh) — installation, commands, authentication
- [inference.sh Apps Catalog](https://inference.sh/apps) — full app library with schemas and examples
- [OpenRouter API](https://openrouter.ai/docs) — LLM model routing and pricing
- FLUX documentation (fal.ai, replicate.com) — image generation parameters and best practices
- Veo API (Google DeepMind) — video generation capabilities and limitations
- Tavily Search API (tavily.com) — web search and extraction endpoints
- Exa API (exa.ai) — semantic search and content extraction
- x.com Developer API — Twitter/X posting, DMs, and engagement endpoints

## Anti-Patterns

| Anti-pattern | Why it fails | Fix |
|-------------|-------------|-----|
| Not checking `infsh app get` before running | Input schema varies between apps; guessing fields causes 400 errors | Always run `infsh app sample` first to see the exact schema |
| Hardcoding file paths without verifying they exist | The CLI auto-uploads relative paths; missing files produce confusing errors | Use absolute paths or verify relative paths with `Test-Path` before running |
| Not using `--no-wait` for long-running tasks | Synchronous runs block the terminal for minutes on video/3D generation | Use `--no-wait` and poll with `infsh task get <id>` for tasks expected to take > 30s |
| Ignoring rate limits and credit costs | Each app has different pricing; some cost $0.50+ per run | Check `infsh app get <app-id>` for cost estimate before bulk/generating runs |
| Using the cheapest model for everything | OpenRouter free models may have lower quality or stricter rate limits | Match model quality to task importance; paid tiers are more reliable |
| Not saving task IDs | Async tasks complete after the terminal session; without the ID you can't retrieve results | Log all task IDs: `infsh task get <id> > task-<id>-result.json` |
| Running image generation without checking supported resolutions/aspect ratios | Models silently crop or stretch to supported dimensions | Check `infsh app get` for `supported_sizes` or `aspect_ratios` field |

More from EliasOulkadi/shokunin

SkillDescription
Aesthetic Web Design>
api-forgeDesign REST/GraphQL APIs with OpenAPI 3.1, error handling, pagination, rate limiting, webhooks, and idempotency. Use when user asks to design an API, create endpoints, define REST/GraphQL schema, or generate OpenAPI spec. Do NOT use for database schema design, frontend API integration, or non-HTTP protocols (gRPC, WebSocket, MQTT).
auth-architectImplement authentication and authorization with OWASP Top 10 standards, OAuth 2.0 + OIDC, WebAuthn/Passkeys, session management, and RBAC/ABAC. Use when user asks to implement login, signup, authentication, authorization, JWT, OAuth, SSO, passkeys, MFA, or role-based access. Do NOT use for API key management (use api-forge), encryption at rest, or network-level security (firewalls, WAF).
business-proposalsGenerate sales outreach sequences, proposals, SOWs, investor pitch decks, and RFP responses. Covers cold email sequences, proposal structure, pricing tiers (Good-Better-Best), scope of work with exclusions, and 10-slide pitch deck.
ci-cdDesign CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary), auto-rollback, self-hosted runners, and environment protection with manual approvals. Use when user asks to set up CI/CD, write a pipeline, configure GitHub Actions/GitLab CI/CircleCI, automate deployments, or set up build/test/deploy workflows. Do NOT use for Dockerfile authoring (use docker), K8s manifests (use kubernetes), or Terraform config (use terraform).
communication>
component-forgeBuild production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and compound component patterns. Includes scaffold script, reference patterns, and template files for React and Vue. Use when user asks to create a UI component, frontend module, or design system component. Do NOT use for page layouts (use landing-craft), routing, or state management architecture (global stores).
comprehensive-reviewComprehensive code review using parallel specialized subagents. If a PR URL is provided, fetches PR details and can post comments. If no PR is provided, reviews the diff between the current branch and its base branch plus any uncommitted changes. CRITICAL: this skill is costly, don't use it unless user explicitly requested to use it.
cross-reviewDelegate code review to a subagent running a specific model. Use ONLY when user explicitly names a model to review changes ("review with opus", "use sonnet to review", "review with gemini"). The root agent reconstructs changes from conversation history and spawns a subagent with the code-review skill using the specified model. Do NOT use for general code review (use code-review skill instead), for reviewing PRs from git history, or when no model is specified by the user.
db-adminPostgreSQL database administration — backup/restore (pg_dump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication (streaming, logical), vacuum/autovacuum tuning, and scheduled backups with retention. Use when user asks to backup a database, restore from backup, monitor database health, set up replication, or perform DBA tasks. Do NOT use for schema design (use db-sculptor), query optimization (use db-sculptor), or migration planning (use db-sculptor).