home / skills / benchflow-ai / skillsbench / hfskill

This skill helps you manage Hugging Face Spaces by listing, querying, and controlling spaces and runtime with token-authenticated operations.

npx playbooks add skill benchflow-ai/skillsbench --skill hfskill

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
6.0 KB
---
name: hfskill
description: Comprehensive toolkit for interacting with Hugging Face Spaces. Use this skill when working with Hugging Face Spaces - listing spaces, retrieving space information, managing space runtime (restart/pause), checking space status, or any other Space-related operations. Requires Hugging Face access token stored in HF_TOKEN or HUGGINGFACE_TOKEN environment variable for write operations.
---

# Hugging Face Spaces Skill

## Overview

This skill provides comprehensive operations for managing and interacting with Hugging Face Spaces. It enables listing, querying, and controlling Spaces through a Python-based interface that wraps the Hugging Face Hub API.

## When to Use This Skill

Use this skill whenever working with Hugging Face Spaces, including:
- Listing or searching for Spaces by author or keyword
- Retrieving detailed information about a specific Space
- Managing Space runtime (restart, pause)
- Checking Space status and hardware configuration
- Listing all Spaces owned by a user

## Authentication Setup

Most Space operations require a Hugging Face access token. Configure authentication by:

1. **Environment Variable (Recommended)**: Set `HF_TOKEN` or `HUGGINGFACE_TOKEN` in the environment
   ```bash
   export HF_TOKEN="hf_your_token_here"
   ```

2. **Command-line Parameter**: Pass `--token` to the script
   ```bash
   python3 scripts/space_operations.py --token "hf_your_token_here" <command>
   ```

**Token Requirements:**
- Read operations (list, info, runtime): Token optional for public Spaces
- Write operations (restart, pause): Token required with write permissions

## Core Operations

### 1. List Spaces

List and search for Hugging Face Spaces with optional filtering.

**Usage:**
```bash
python3 scripts/space_operations.py list [--author USERNAME] [--search TERM] [--limit N]
```

**Examples:**
- List recent Spaces: `python3 scripts/space_operations.py list --limit 10`
- List Spaces by author: `python3 scripts/space_operations.py list --author stabilityai`
- Search Spaces: `python3 scripts/space_operations.py list --search "chatbot"`

**Output:** JSON array of Space objects with id, author, SDK, likes, and runtime information.

### 2. Get Space Information

Retrieve detailed information about a specific Space.

**Usage:**
```bash
python3 scripts/space_operations.py info <space_id>
```

**Example:**
```bash
python3 scripts/space_operations.py info stabilityai/stable-diffusion
```

**Output:** JSON object with Space metadata including:
- Space ID and author
- SDK type and version
- Runtime state and hardware
- Privacy status and likes
- Last modified timestamp

### 3. Restart Space

Restart a Space to apply changes or recover from errors.

**Usage:**
```bash
python3 scripts/space_operations.py restart <space_id>
```

**Example:**
```bash
python3 scripts/space_operations.py restart myusername/my-space
```

**Requirements:**
- Valid access token with write permissions
- Ownership or write access to the Space

### 4. Pause Space

Pause a Space to conserve compute resources when not in use.

**Usage:**
```bash
python3 scripts/space_operations.py pause <space_id>
```

**Example:**
```bash
python3 scripts/space_operations.py pause myusername/my-space
```

**Requirements:**
- Valid access token with write permissions
- Ownership or write access to the Space

### 5. Get Space Runtime

Retrieve real-time runtime information about a Space's current state.

**Usage:**
```bash
python3 scripts/space_operations.py runtime <space_id>
```

**Example:**
```bash
python3 scripts/space_operations.py runtime stabilityai/stable-diffusion
```

**Output:** JSON object with runtime details including stage, hardware, and sleep configuration.

### 6. List User Spaces

List all Spaces owned by a specific user.

**Usage:**
```bash
python3 scripts/space_operations.py user <username>
```

**Example:**
```bash
python3 scripts/space_operations.py user stabilityai
```

**Output:** JSON array of all Spaces for the specified user.

## Space ID Format

All Spaces are identified using the format: `username/space-name`

Examples:
- `stabilityai/stable-diffusion`
- `openai/whisper`
- `meta-llama/llama-2-chat`

Always use the full Space ID when referencing a specific Space.

## Common Workflow Examples

### Example 1: Find and Restart a Space
```bash
# List user's Spaces
python3 scripts/space_operations.py user myusername

# Check Space status
python3 scripts/space_operations.py runtime myusername/my-space

# Restart if needed
python3 scripts/space_operations.py restart myusername/my-space
```

### Example 2: Search for Popular Spaces
```bash
# Search for chatbot Spaces
python3 scripts/space_operations.py list --search "chatbot" --limit 20

# Get detailed info about interesting Space
python3 scripts/space_operations.py info username/interesting-space
```

### Example 3: Monitor Space Status
```bash
# Get current runtime information
python3 scripts/space_operations.py runtime myusername/my-space

# Get full Space details
python3 scripts/space_operations.py info myusername/my-space
```

## Error Handling

Common errors and solutions:

- **"No HF_TOKEN found"**: Set the environment variable or pass `--token`
- **401 Unauthorized**: Invalid token or token expired
- **403 Forbidden**: Token lacks write permissions or you don't own the Space
- **404 Not Found**: Space doesn't exist or is private without proper access
- **429 Too Many Requests**: Rate limit exceeded, wait before retrying

## Dependencies

This skill requires the `huggingface_hub` Python package:

```bash
pip install huggingface_hub
```

Verify installation before using the skill. If the package is missing, install it automatically or guide the user to install it.

## Reference Documentation

For detailed information about Space states, hardware options, and API specifics, refer to `references/spaces_reference.md`.

## Resources

### scripts/
- `space_operations.py`: Main executable script for all Space operations

### references/
- `spaces_reference.md`: Comprehensive reference documentation for Hugging Face Spaces API, runtime states, hardware options, and best practices

Overview

This skill is a comprehensive toolkit for interacting with Hugging Face Spaces. It exposes operations to list, query, and control Spaces, and wraps the Hugging Face Hub API for common Space management tasks. Write operations require a Hugging Face access token stored in HF_TOKEN or HUGGINGFACE_TOKEN.

How this skill works

The skill calls the Hugging Face Hub endpoints to list Spaces, retrieve Space metadata, and manage runtime state (restart, pause, runtime status). Read operations work for public Spaces without a token; actions that change state require a token with write permissions. Outputs are returned as JSON objects or arrays containing metadata and runtime details.

When to use it

  • Searching for or listing Spaces by author, keyword, or popularity
  • Retrieving detailed metadata for a specific Space (SDK, hardware, privacy, last modified)
  • Checking runtime status and hardware configuration before debugging or monitoring
  • Restarting or pausing a Space to apply updates or conserve compute
  • Listing all Spaces owned by a user for inventory or maintenance

Best practices

  • Set HF_TOKEN or HUGGINGFACE_TOKEN in the environment for any write operations
  • Use the full Space ID format username/space-name when referencing a Space
  • Check runtime status before restarting to avoid interrupting active sessions
  • Limit search results with --limit and filter by author or keyword for performance
  • Handle common HTTP errors (401/403/404/429) with clear retries or permission checks

Example use cases

  • Inventory all Spaces you own to identify stale or unused deployments
  • Search for chatbot Spaces and fetch metadata to evaluate SDK and resource needs
  • Restart a Space after deploying new code to ensure the runtime picks up changes
  • Pause noncritical Spaces overnight to reduce compute costs
  • Automate a daily runtime check to alert when a Space enters an error state

FAQ

Do I always need a token to list Spaces?

No—public Space read operations can work without a token. A token is required for private Spaces or for write operations like restart and pause.

Where should I store my access token?

Store your token in the HF_TOKEN or HUGGINGFACE_TOKEN environment variable for scripts and CI; you can also pass --token for one-off commands.

What permissions does the token need to restart a Space?

The token needs write permissions and you must be the owner or have collaborator write access to the Space.