AR

arcana-upload-api

Uploads and syncs your custom agent skills to the Anthropic API for team usage.

Install

mkdir -p .claude/skills/arcana-upload-api && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14338" && unzip -o skill.zip -d .claude/skills/arcana-upload-api && rm skill.zip

Installs to .claude/skills/arcana-upload-api

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Upload a Claude Code skill to the Anthropic Skills API for workspace-wide availability. Analyzes the skill, bundles dependencies, transforms frontmatter, validates, and uploads. Tracks uploads for future updates. Trigger phrases: "upload to API", "publish skill", "sync to API", "upload skill".
294 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Beginner

Key capabilities

  • Upload a Claude Code skill to the Anthropic Skills API
  • Analyze the skill to identify necessary files and dependencies
  • Transform frontmatter by stripping CC-only fields
  • Validate skills for API compatibility
  • Track uploaded skills for future updates

How it works

The skill analyzes a Claude Code skill, bundles its dependencies, transforms its frontmatter, validates it for API compatibility, creates a ZIP file, and then uploads it to the Anthropic Skills API. It also tracks the upload for future updates.

Inputs & outputs

You give it
a Claude Code skill directory
You get back
the skill uploaded to the Anthropic Skills API with a skill ID and version

When to use arcana-upload-api

  • Publishing new agent skills
  • Updating shared skill sets
  • Distributing custom tools across the team

About this skill

Arcana Upload API: Upload to Messages API

Upload a Claude Code skill to the Anthropic Skills API.

Path Convention

{PLUGIN_ROOT} = This plugin's root directory (where plugin.json lives)

Prerequisites

  • ANTHROPIC_API_KEY environment variable must be set
  • Python 3.8+ with requests and pyyaml packages

What This Does

  1. Analyzes the skill to understand what it does
  2. Identifies all files the skill needs
  3. Transforms frontmatter (strips CC-only fields)
  4. Validates for API compatibility
  5. Creates a ZIP file
  6. Uploads to Anthropic Skills API
  7. Tracks the upload for future updates

Workflow

Step 1: Check Prerequisites

Verify API key is set:

if [ -z "$ANTHROPIC_API_KEY" ]; then
  echo "ANTHROPIC_API_KEY not set"
fi

If not set, ask user to set it.

Step 2: Check State

Read {PLUGIN_ROOT}/lib/patterns/state-tracking.md for guidance.

Check if this skill has been uploaded before:

python3 "{PLUGIN_ROOT}/lib/tools/state.py" get {skill-name}

If found:

  • Inform user: "Skill already uploaded (v2). Will create new version."
  • Use stored skill_id for version creation

If not found:

  • Inform user: "New skill. Will create."

Step 3: Analyze the Skill

Same as export-zip - read {PLUGIN_ROOT}/lib/patterns/skill-analysis.md.

  1. Read the SKILL.md
  2. Explore the skill directory
  3. Trace dependencies
  4. Build file manifest

Step 4: Transform Frontmatter

Same as export-zip - read {PLUGIN_ROOT}/lib/patterns/frontmatter-transform.md.

Strip CC-only fields, keep name/description/version.

Step 5: Validate

Same as export-zip - read {PLUGIN_ROOT}/lib/references/validation-rules.md.

Validate name and description.

Step 6: Create ZIP

Same as export-zip:

python3 "{PLUGIN_ROOT}/lib/tools/zip_skill.py" \
  --name {skill-name} \
  --output /tmp/{skill-name}.zip \
  --base-path {temp-directory} \
  {files...}

Step 7: Upload to API

Read {PLUGIN_ROOT}/lib/references/api-spec.md for API details.

For new skill:

python3 "{PLUGIN_ROOT}/lib/tools/api.py" upload /tmp/{skill-name}.zip \
  --title "{Skill Title}"

For existing skill (new version):

python3 "{PLUGIN_ROOT}/lib/tools/api.py" version {skill_id} /tmp/{skill-name}.zip

Step 8: Update State

Record the upload:

python3 "{PLUGIN_ROOT}/lib/tools/state.py" set {skill-name} \
  --skill-id {skill_id} \
  --source-path {original-skill-path}

Step 9: Report Result

New skill:

Upload complete!

Skill: my-skill
ID: skill_01AbCdEfGhIjKlMnOpQrStUv
Version: 1
Status: Created

To use in Messages API:
{
  "container": {
    "skills": [
      {
        "type": "custom",
        "skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
        "version": "latest"
      }
    ]
  }
}

Updated skill:

Upload complete!

Skill: my-skill
ID: skill_01AbCdEfGhIjKlMnOpQrStUv
Version: 3 (updated from v2)
Status: New version created

The latest version is now active for "version": "latest"

Example Session

User: Upload the github-helper skill to the API

Claude:

  1. Checking ANTHROPIC_API_KEY... ✓ Set
  2. Checking state... Not found (new skill)
  3. Reading skill at /path/to/github-helper/SKILL.md...
  4. This skill helps with GitHub operations.
  5. Found dependencies: 2 files
  6. Transforming frontmatter (stripping: allowed-tools, hooks)...
  7. Validation passed
  8. Creating ZIP...
  9. Uploading to API...
python3 lib/tools/api.py upload /tmp/github-helper.zip --title "GitHub Helper"
{
  "id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
  "title": "GitHub Helper",
  "version": 1
}
  1. Recording state...

Upload complete!

Error Handling

ErrorResolution
API key not setAsk user to set ANTHROPIC_API_KEY
401 UnauthorizedCheck API key is valid
422 Validation errorCheck name/description, report specific issue
429 Rate limitedWait and retry
Network errorRetry with backoff

Cleanup

After successful upload, optionally delete the temporary ZIP:

rm /tmp/{skill-name}.zip

Related Patterns

  • {PLUGIN_ROOT}/lib/patterns/skill-analysis.md - How to analyze skills
  • {PLUGIN_ROOT}/lib/patterns/state-tracking.md - How to track uploads
  • {PLUGIN_ROOT}/lib/references/api-spec.md - API specification

When not to use it

  • When `ANTHROPIC_API_KEY` environment variable is not set
  • When the skill is not intended for workspace-wide availability

Prerequisites

`ANTHROPIC_API_KEY` environment variable must be setPython 3.8+ with `requests` and `pyyaml` packages

Limitations

  • Requires `ANTHROPIC_API_KEY` to be set
  • Requires Python 3.8+ with `requests` and `pyyaml`
  • Uploads only to the Anthropic Skills API

How it compares

This skill automates the entire process of preparing and publishing a Claude Code skill to the Anthropic API, including dependency bundling and validation, which is more efficient than manual packaging and uploading.

Compared to similar skills

arcana-upload-api side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
arcana-upload-api (this skill)07moReviewBeginner
prompt-optimize139moNo flagsAdvanced
ai-cost-optimizer95moCautionIntermediate
self-improving-agent121moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

prompt-optimize

YYH211

Expert prompt engineering skill that transforms Claude into "Alpha-Prompt" - a master prompt engineer who collaboratively crafts high-quality prompts through flexible dialogue. Activates when user asks to "optimize prompt", "improve system instruction", "enhance AI instruction", or mentions prompt engineering tasks.

13113

ai-cost-optimizer

ScientiaCapital

Save 40-70% on AI costs with intelligent multi-LLM routing. Automatically selects the optimal model based on task complexity across 40+ models from 8 providers.

990

self-improving-agent

alirezarezvani

Curate Claude Code's auto-memory into durable project knowledge. Analyze MEMORY.md for patterns, promote proven learnings to CLAUDE.md and .claude/rules/, extract recurring solutions into reusable skills. Use when: (1) reviewing what Claude has learned about your project, (2) graduating a pattern from notes to enforced rules, (3) turning a debugging solution into a skill, (4) checking memory health and capacity.

128

ccs-delegation

kaitranntt

Auto-activate CCS CLI delegation for deterministic tasks. Parses user input, auto-selects optimal profile (glm/kimi/custom) from ~/.ccs/config.json, enhances prompts with context, executes via `ccs {profile} -p "task"` or `ccs {profile}:continue`, and reports results. Triggers on "use ccs [task]" patterns, typo/test/refactor keywords. Excludes complex architecture, security-critical code, performance optimization, breaking changes.

210

skill-from-notebook

GBSOSS

Extract methodologies from documents or examples to create executable skills

28

prompt-factory

alirezarezvani

World-class prompt powerhouse that generates production-ready mega-prompts for any role, industry, and task through intelligent 7-question flow, 69 comprehensive presets across 15 professional domains (technical, business, creative, legal, finance, HR, design, customer, executive, manufacturing, R&D, regulatory, specialized-technical, research, creative-media), multiple output formats (XML/Claude/ChatGPT/Gemini), quality validation gates, and contextual best practices from OpenAI/Anthropic/Google. Supports both core and advanced modes with testing scenarios and prompt variations.

45

Search skills

Search the agent skills registry