本文へ移動
cccskills
無料GitHub で公開

api-credentials

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.

インストール方法を見る

含まれるファイル(5)

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

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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:

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

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

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

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:
cp /home/user/claude-skills/api-credentials/assets/config.json.example \
   /home/user/claude-skills/api-credentials/config.json
  1. Edit config.json and add your API keys:
{
  "anthropic_api_key": "sk-ant-api03-...",
  "google_api_key": "AIzaSy...",
  "github_api_key": "ghp_..."
}
  1. Ensure the config file is in .gitignore (already configured)

Option 2: Environment Variables

Set environment variables for the providers you need:

# 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:
    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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

GitHub repository access in containerized environments using REST API and credential detection. Use when git clone fails, or when accessing private repos/writing files via API.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

Decide which model, effort level, and cascade shape each subagent gets, and how to keep improvement loops safe (evaluator-as-selector, stop on regression). Routes on measured cost-per-completed-task rather than per-token price, because a tier's token count varies more by task shape than price varies across tiers. Covers per-model effort semantics, the concision lever, cascade preconditions, context handoff, and watching a subagent fan-out live. Use when spawning subagents via the Agent or Workflow tools, when choosing how to escalate a failed attempt, when fanning out more than a handful of agents, or when asked which model or effort a task should get. Grounded in a 2026-07 calibration, a 2026-08 coding-cost study, a 2026-09 seeded-bug repair battery, a 2026-10 Haiku 5.5 ladder priced per spawn, and a 2026-10 retry-versus-escalation ladder on 295 SWE-bench Verified tasks; Managed Agents API specifics are operational, not calibrated.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

Guidance for asking clarifying questions when user requests are ambiguous, have multiple valid approaches, or require critical decisions. Use when implementation choices exist that could significantly affect outcomes.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

Pre-change blast-radius report for a symbol or file. Walks tree-sitting references, augments with a plain-text scan over non-parsed files (configs, plain docs), and clusters affected sites by feature (`_FEATURES.md`) or top-level package. Use when about to refactor, rename, or delete something in a repo you don't own — "what breaks if I change `validateUser`", "who calls this", "is this safe to remove", "where is this used", "blast radius", "impact analysis". This is the CONVERGENT pre-change risk skill — for "what is this repo?" use exploring-codebases; for "where is X?" use searching-codebases.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

Read Bluesky/ATProto without depending on Bluesky's AppView — interactions on a user's posts, thread replies, any repo's records, network-wide backlinks across every lexicon, an account's handle and PDS history, which collections are active network-wide, and layer-by-layer outage diagnosis. Use when bsky.app or the AppView is down or slow, when a Bluesky read returns timeouts or 5xx, when asked who liked/replied/quoted/reposted something, when pulling live Bluesky context cheaply, when reading records straight from a PDS, when asked who references a record or account anywhere on the network, whether an account has changed handle or migrated servers, or which lexicons and non-Bluesky apps are active on atproto. Complements browsing-bluesky, which routes everything through the AppView and fails when it does.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

bm25

無料

Ranked content search over a text corpus you point it at, using BM25 (via xhluca/bm25s). Corpus-agnostic: cloned repos, project knowledge stores, uploaded files and archives, any local directory. In-memory BM25 index per invocation, with a session-local disk cache for repeat runs against the same corpus. Use for "rank these documents", "search this corpus", "which files are most about X", "find content about Y", or any multi-word concept query against a known body of text where grep would return everything or nothing. Needs a corpus on disk. Not for searching stored memories or prior-session decisions (remembering), not for a named symbol or a file's structure (tree-sitting), and not for a literal string you could grep.

日本語の概要は準備中です。原文の説明を表示しています。

oaustegard/claude-skills1502026年10月10日 更新

oaustegard のスキルをすべて見る

このスキルの問題を報告する