Skip to content
Back to skills

Api Credentials

DSecurity

**๐Ÿšจ DEPRECATED: This skill is no longer needed for hosted skills environments.** **New approach:** Skills now read credentials directly from project knowledge files: - `ANTHROPIC_API_KEY.txt`, `GOOGLE_API_KEY.txt`, `GITHUB_API_KEY.txt` (recommended) - Or `API_CREDENTIALS.json` (combined file) See updated skill documentation: - [orchestrating-agents](../orchestrating-agents/SKILL.md#setup) - [invoking-gemini](../invoking-gemini/SKILL.md#setup) - [invoking-github](../invoking-github/SKILL.md#q...

  • 150 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added December 19, 2025
securitypythongoshellbashgitapisecuritydocumentation

Works with

  • api

Security analysis

D50/100
  • criticalModifies startup scripts or system services for persistence
  • criticalModifies startup scripts or system services for persistence

Pro scans all 6 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add oaustegard/claude-skills --skill api-credentials --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Credentials?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Api Credentials
[![Security: D โ€” Skills Directory](https://www.skillsdirectory.com/api/skills/oaustegard-api-credentials/badge)](https://www.skillsdirectory.com/skills/oaustegard-api-credentials)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: api-credentials
description: Securely manages API credentials for multiple providers (Anthropic Claude, Google Gemini, GitHub). Use when skills need to access stored API keys for external service invocations.
---

# API Credentials Management

**๐Ÿšจ DEPRECATED: This skill is no longer needed for hosted skills environments.**

**New approach:** Skills now read credentials directly from project knowledge files:
- `ANTHROPIC_API_KEY.txt`, `GOOGLE_API_KEY.txt`, `GITHUB_API_KEY.txt` (recommended)
- Or `API_CREDENTIALS.json` (combined file)

See updated skill documentation:
- [orchestrating-agents](../orchestrating-agents/SKILL.md#setup)
- [invoking-gemini](../invoking-gemini/SKILL.md#setup)
- [invoking-github](../invoking-github/SKILL.md#quick-start)

**Legacy use only:** This skill may still be useful for local development environments or backward compatibility.

---

**โš ๏ธ WARNING: This is a PERSONAL skill - DO NOT share or commit with actual credentials!**

This skill provides secure storage and retrieval of API credentials for multiple providers. It serves as a dependency for other skills that need to invoke external APIs programmatically.

## Supported Providers

- **Anthropic** (Claude API)
- **Google** (Gemini API, Vertex AI, etc.)
- **GitHub** (GitHub API, Personal Access Tokens)
- Extensible for additional providers

## Purpose

- Centralized credential storage for multiple API providers
- Secure retrieval methods for dependent skills
- Clear error messages when credentials are missing
- Support for multiple credential sources (config file, environment variables)

## Usage by Other Skills

Skills that need to invoke APIs should reference this skill:

### Anthropic Claude API

```python
import sys
sys.path.append('/home/user/claude-skills/api-credentials/scripts')
from credentials import get_anthropic_api_key

try:
    api_key = get_anthropic_api_key()
    # Use api_key for Claude API calls
except ValueError as e:
    print(f"Error: {e}")
```

### Google Gemini API

```python
import sys
sys.path.append('/home/user/claude-skills/api-credentials/scripts')
from credentials import get_google_api_key

try:
    api_key = get_google_api_key()
    # Use api_key for Gemini API calls
except ValueError as e:
    print(f"Error: {e}")
```

### GitHub API

```python
import sys
sys.path.append('/home/user/claude-skills/api-credentials/scripts')
from credentials import get_github_api_key

try:
    api_key = get_github_api_key()
    # Use api_key for GitHub API calls
except ValueError as e:
    print(f"Error: {e}")
```

## Setup Instructions

### Option 1: Configuration File (Recommended)

1. Copy the example config:
```bash
cp /home/user/claude-skills/api-credentials/assets/config.json.example \
   /home/user/claude-skills/api-credentials/config.json
```

2. Edit `config.json` and add your API keys:
```json
{
  "anthropic_api_key": "sk-ant-api03-...",
  "google_api_key": "AIzaSy...",
  "github_api_key": "ghp_..."
}
```

3. Ensure the config file is in `.gitignore` (already configured)

### Option 2: Environment Variables

Set environment variables for the providers you need:

```bash
# Anthropic Claude
export ANTHROPIC_API_KEY="sk-ant-api03-..."

# Google Gemini
export GOOGLE_API_KEY="AIzaSy..."

# GitHub
export GITHUB_TOKEN="ghp_..."
# or
export GITHUB_API_KEY="ghp_..."
```

Add to your shell profile (~/.bashrc, ~/.zshrc) to persist.

## Priority

Credential retrieval follows this priority for each provider:
1. `config.json` in the skill directory (highest priority)
2. Environment variable (ANTHROPIC_API_KEY or GOOGLE_API_KEY)
3. ValueError raised if neither is available

## Security Notes

- **Never commit config.json with real credentials**
- The config.json file should be in .gitignore
- Only config.json.example should be version controlled
- Consider using environment variables in shared/production environments
- Rotate API keys regularly
- Skills should never log or display full API keys

## File Structure

```
api-credentials/
โ”œโ”€โ”€ SKILL.md              # This file
โ”œโ”€โ”€ config.json           # YOUR credentials (gitignored)
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ credentials.py    # Credential retrieval module
โ””โ”€โ”€ assets/
    โ””โ”€โ”€ config.json.example  # Template for users
```

## Error Handling

When credentials are not found, the module raises `ValueError` with clear guidance:
- Where to place config.json
- How to set environment variables
- Links to provider consoles for key generation

Skills should catch `ValueError` exceptions and handle appropriately.

## Available Functions

**get_anthropic_api_key()** โ†’ str
- Returns Anthropic API key
- Raises ValueError if not configured

**get_google_api_key()** โ†’ str
- Returns Google API key
- Raises ValueError if not configured

**get_github_api_key()** โ†’ str
- Returns GitHub API token (Personal Access Token)
- Raises ValueError if not configured

**get_api_key_masked(api_key)** โ†’ str
- Returns masked version for safe logging
- Example: "sk-ant-...xyz"

**verify_credential(provider)** โ†’ bool
- Checks if provider is configured
- Returns True/False without raising exceptions
- Providers: 'anthropic', 'google', 'github'

## Adding New Providers

To support additional providers:

1. Add field to `assets/config.json.example`
2. Add getter function to `scripts/credentials.py`:
   ```python
   def get_provider_api_key() -> str:
       # Follow existing pattern with config file + env var
       pass
   ```
3. Add to `verify_credential()` mapping
4. Update this documentation

## Token Efficiency

This skill uses ~300 tokens when loaded but saves repeated credential management code across multiple skills that invoke external APIs. It provides a single, consistent pattern for all credential handling.

Files in this skill

  • .gitignore136 B
  • README.md199 B
  • SKILL.md5.6 KB
  • VERSION6 B
  • assets/config.json.example567 B
  • scripts/credentials.py7.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading commentsโ€ฆ