Generated banner for Skill Creator
Generated logo for Skill Creator

Skill Creator

Alex YangCommunityCreated by Alex Yang

  • Skill
  • Meta (authoring, orchestration, planning, memory)
  • Agent tooling
  • MIT
  • Low risk

From the author

Create, improve, and evaluate agent skills (SKILL.md plus reference files). Use this skill whenever the user wants to build, scaffold, or design a new skill, improve or fix an existing skill that isn't working well, score or benchmark a skill's quality or run evals on it, or turn a repeated manual workflow into a skill ("I keep doing X manually", "can you remember how to do X", "turn this into a skill").
— the description by Alex Yang

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Skill-creator provides a structured lifecycle for agent skill development, covering planning, implementation, and quality assurance. It emphasizes a philosophy of precision, advocating for clear goal-oriented instructions over rigid scripting. The skill includes a robust rubric for evaluating performance, patterns for dynamic tool detection, and architectural templates to ensure skills are maintainable, robust, and user-friendly.

What it does

  • Scaffolds new skills using proven architectural patterns like Linear, Router, and Methodology.
  • Provides a 10-dimension quality rubric to score and benchmark existing skills.
  • Guides the creation of dynamic detection flows for external tools and dependencies.
  • Facilitates the conversion of repetitive manual workflows into automated agent skills.
  • Offers structured advice on balancing inline instructions with external reference files.
  • Supports iterative improvement of existing skills through gap analysis and scorecard reporting.

When to use it

  • When you need to build a new agent skill from scratch.
  • When an existing skill is underperforming or failing to meet quality standards.
  • When you want to audit a skill's design against production-grade best practices.
  • When you need to transform a manual, multi-step process into a reliable agentic workflow.

Advantages

  • Promotes consistent, high-quality skill design across different domains.
  • Reduces agent fragility by enforcing runtime environment detection.
  • Improves maintainability by separating complex logic into reference files.
  • Provides objective metrics for evaluating skill effectiveness.
  • Encourages clear, concise instruction sets that leverage model reasoning.

Usage examples

“I keep manually checking stock correlations in Excel. Can you turn this into a skill?”
The agent will initiate the 'Create' mode, gathering requirements to build a structured skill that automates data fetching, correlation analysis, and reporting.
“Evaluate my current 'data-scraper' skill and tell me why it's failing.”
The agent will perform a 'Evaluate' mode analysis, scoring the skill against the 10-dimension rubric and providing a prioritized list of improvements.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/himself65/skill-creator/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip skill-creator.zip -d .agents/skills

Documentation by Alex Yang

Skill Creator

Create, evaluate, and iterate on high-quality agent skills. This skill covers the whole lifecycle: planning what the skill should do, writing SKILL.md and reference files, scoring quality against a rubric, and iterating until the skill meets production standards.

Philosophy: A great skill is precise, not long. Its description routes the right requests to it. Its body gives the model the context it can't get anywhere else — the environment, tool contracts, defaults, domain judgment, and the reasons behind each constraint — and leaves out what a capable model already does on its own. Current Claude models follow instructions closely and literally, so every line gets acted on: an over-scripted or shouting skill produces rigid, over-cautious output, while a clear goal and quality bar let the model plan the work itself. references/writing-guide.md covers this in detail.

Runtime adaptation: Skills that touch external tools should detect what is installed, authenticated, and reachable at runtime and adapt, rather than assuming a single method. Offer fallback paths where real alternatives exist. See references/dynamic-calling.md for the pattern catalog.


Step 1: Understand What the User Wants

Classify the request into one of these modes:

User IntentModeJump To
Create a brand-new skillCreateStep 2
Improve / fix an existing skillImproveStep 6
Evaluate / score a skill's qualityEvaluateStep 7

If ambiguous, ask: "Do you want to create a new skill, improve an existing one, or evaluate one?"

Gather Requirements (for Create mode)

Before writing anything, answer these questions (ask the user if unclear):

QuestionWhy it matters
What task does the skill automate?Defines the core workflow
Who is the target user?Determines complexity and terminology level
What tools/APIs/CLIs does it use?Determines dependencies and platform restrictions
What does the user provide as input?Defines parameters and defaults
What should the output look like?Defines the output contract
Does it need API keys or credentials?Determines required_environment_variables
Should it work on Claude.ai or only CLI?Determines platform field and dynamic commands

Step 2: Plan the Skill Architecture

Before writing SKILL.md, plan the structure. Read references/architecture-patterns.md for detailed guidance on each pattern.

Choose a Structural Pattern
PatternWhen to useShapeExample
LinearSingle workflow, no branchingSetup → fetch → analyze → respondearnings-preview
RouterMultiple sub-tasks under one umbrellaSetup + routing table + sub-skillsstock-correlation (4 sub-skills), etf-premium
MethodologyFormal domain framework with real gatesOrdered checks, each able to stop the analysissepa-strategy
WidgetGenerates interactive UI outputExtract → compute → render → explainoptions-payoff
API WrapperWraps an external API with many endpointsAuth + endpoint map + heavy referencesfintel-data
Plan the Outline

Every skill has three parts:

  1. Setup / detection — detect available tools, auth state, and runtime environment, and decide which method to use. Skills with no external dependencies can skip this.

  2. The work — numbered steps where the order genuinely matters (fetch before compute, a gate that can end the analysis), plus the judgment the model has to exercise, stated as goals, criteria, and domain heuristics rather than a script.

  3. Respond to the user — the output contract: what the answer leads with, what it must contain, which caveats apply, and any verdict scale.

If a skill needs more than about nine steps, split it or use the Router pattern.

Plan the Detection Flow

Skills that touch external tools should start with a runtime detection flow. Read references/dynamic-calling.md for all patterns. The detection flow answers:

QuestionHow to detectDecision
Is the CLI tool installed?command -v toolCLI path vs Python fallback
Is the user authenticated?tool auth status / echo $API_KEYSkip auth setup vs guide through it
Which runtime has the library?import lib in terminal vs execute_codeRoute to correct runtime
Is a richer tool available?gh --version vs git --versionRich path vs minimal path
Is live data reachable?curl -s endpointLive data vs cached/default

The detection output feeds a decision tree that the rest of the skill follows — check rather than assume.

Plan Reference Files

Decide what goes in SKILL.md vs references/:

In SKILL.md (under ~250 lines)In references/
Workflow and decision pointsDetailed API documentation
Routing/decision tablesCode templates (>20 lines)
Parameter defaults tableFormulas and edge cases
Output contractTroubleshooting database
Quick examples (1-3)Comprehensive examples (4+) and dated datasets

Step 3: Write the SKILL.md

Read references/writing-guide.md for detailed instructions on writing each section. Read references/frontmatter-guide.md for the complete YAML field reference.

Key Rules
  1. Frontmatter first: name (lowercase-hyphenated, max 64 chars) and description (max 1024 chars, no angle brackets) are required. The description is routing text that rides along in every request: say what the skill does, name the categories of requests it serves and the distinctive vocabulary users will use (methods, tools, data types, entities), and point to sibling skills for neighboring requests. Name intent categories instead of listing near-synonymous phrasings.

  2. Detection flow for external dependencies: use !command`` probes with fallback sentinels to detect tools, auth state, and runtime, then route to a method. For Codex and other hosts without command preprocessing, explicitly instruct the agent to run the enclosed commands with its shell tool and use the real output. Offer a second path where a real alternative exists (CLI vs Python library vs built-in tool). See references/dynamic-calling.md.

  3. Match specificity to fragility: give exact commands, flags, and code for fragile operations — installs, auth, CLI syntax, API contracts, calculations that must be right. For judgment work — analysis, interpretation, writing — state the goal, the criteria, and the domain heuristics, and let the model plan. Put a pass/fail gate wherever a failed check really ends the analysis.

  4. Defaults table: give every parameter the user might omit an explicit default, so the skill never stalls waiting for input.

  5. Output contract in the final step: what to lead with, what the answer must contain, which caveats apply, and any verdict or grade scale. Pin a section-by-section template only where the format itself matters (scorecards, widgets, checklists). Describe length qualitatively rather than with word or sentence counts, and label examples as illustrative rather than filling them with made-up figures for real companies.

  6. Plain register: state each constraint once, with its reason. Leave out capitalized MUST/NEVER/CRITICAL, repeated warnings, and instructions current models follow by default ("be thorough", "think step by step", "double-check your answer") — they cause over-triggering and over-checking rather than better work. Keep real policy constraints (read-only, no trade execution, privacy) in plain words.

  7. Keep volatile facts honest: fetch live data where you can, date-stamp anything that will go stale, and keep dated datasets in references/. Verify API names and response shapes against the current library before shipping.

See references/skill-examples.md for annotated examples of each pattern.


Step 4: Write Reference Files

Read references/writing-guide.md for the full reference file authoring guide.

Key Rules
  1. Naming: lowercase-hyphenated.md, one file per concept-cluster

  2. Size: Quick lookup 50-150 lines, deep guide 150-400 lines, catalog 400-900 lines

  3. Structure: H1 title, H2 sections, code blocks, tables, edge cases section at end

  4. Linking: Use backtick paths in SKILL.md steps and a ## Reference Files section at the end


Step 5: Quality Check Before Delivery

Run the skill through the quality rubric in references/quality-rubric.md. Score each dimension.

Quick Checklist
  • [ ] Frontmatter has name and description; the description is under 1024 characters with no angle brackets

  • [ ] Description names what the skill does, the categories of intent it serves, and its distinctive vocabulary — not a list of near-synonymous phrasings

  • [ ] Description points to sibling skills for neighboring requests, where they exist

  • [ ] SKILL.md is under 300 lines (ideally under 250)

  • [ ] Every parameter has an explicit default

  • [ ] Numbered steps where order matters; judgment work is stated as goals, criteria, and heuristics

  • [ ] Gates stop the analysis only where a failed check really ends it

  • [ ] Final step states an output contract: what to lead with, required content, caveats, verdict scale

  • [ ] No numeric length caps; examples are labeled illustrative

  • [ ] Constraints are stated once, in plain words, with their reasons — no capitalized MUST/NEVER, no "think step by step" or "double-check" boilerplate

  • [ ] Complex content is in reference files, not inline

  • [ ] Reference file pointers use backtick paths

  • [ ] External dependencies are detected at runtime with !command`` checks and fallbacks (|| echo "...")

  • [ ] Separate runtimes treated as separate environments (terminal vs execute_code)

  • [ ] Legal/ethical disclaimers included where appropriate

  • [ ] No hardcoded ticker lists, tool paths, or undated static data that will go stale

  • [ ] API names, fields, and code in the skill were checked against the current library

If any item fails, fix it before delivering to the user.


Step 6: Improve an Existing Skill

When the user asks to improve a skill:

6a: Read the Current Skill

Read the SKILL.md and all reference files (on Hermes, skill_view(name) loads them).

6b: Score It Against the Rubric

Use the quality rubric from references/quality-rubric.md. Present the score breakdown to the user (illustrative):

DimensionScoreIssue
Trigger quality6/10Twenty near-synonym phrasings; misses the ETF use case
Defaults coverage3/10No defaults table
Instruction design5/10Scripted steps for judgment work; capitalized warnings
Output contract4/10Rigid 9-section template with made-up example figures
Reference usage7/10Good split, but missing troubleshooting
6c: Propose Specific Improvements

List concrete changes ranked by impact:

  1. [Highest impact] Add a defaults table covering every parameter

  2. [High impact] Rewrite the description around intent categories and distinctive vocabulary

  3. [Medium impact] Replace the fixed report template with an output contract

  4. ...

6d: Apply Changes

After user approval, edit the skill files (on Hermes, use skill_manage(action='patch', ...) for targeted changes or skill_manage(action='edit', ...) for full rewrites).


Step 7: Evaluate a Skill

When the user asks to evaluate or score a skill:

7a: Load and Analyze

Read the full SKILL.md and all reference files. Count lines, steps, defaults, and reference files, and note the description's length and the intent categories it covers.

7b: Score Against Rubric

Use the comprehensive rubric from references/quality-rubric.md. Score each of the 10 dimensions on a 1-10 scale.

7c: Present the Scorecard
## Skill Quality Scorecard: [skill-name]

| # | Dimension | Score | Notes |
|---|---|---|---|
| 1 | Trigger quality | 8/10 | Covers all four intent categories; one sibling boundary missing |
| 2 | Defaults coverage | 9/10 | All 11 parameters have defaults |
| 3 | Instruction design | 8/10 | Ordered setup and compute; analysis stated as criteria |
| 4 | Reference file strategy | 7/10 | 2 files, could use troubleshooting |
| 5 | Dynamic content | 10/10 | Dep check + live data injection |
| 6 | Output contract | 9/10 | Leads with verdict; required caveats; scale defined |
| 7 | Error handling | 6/10 | Missing data handling unclear |
| 8 | Code/formula quality | 8/10 | Working JS, copy-paste ready |
| 9 | Conciseness & register | 7/10 | 196 lines; two capitalized warnings to restate |
| 10 | Domain accuracy | 9/10 | BS formulas correct, edge cases covered |

**Overall: 81/100** -- Production quality

### Top 3 Improvements
1. ...
2. ...
3. ...
Reference Skills

Skills in this repo that show each pattern well:

SkillWhat it demonstrates
sepa-strategyMethodology pattern: real gates, domain criteria in references, a verdict scale
options-payoffWidget pattern: a default for every field, live data injection, a precise render spec
stock-correlationRouter pattern: intent routing table, self-contained sub-skills, metrics computed in code
earnings-previewOutput contract: a content checklist with one judgment section, lead-with-the-headline guidance
fintel-dataAPI wrapper: key resolution flow, endpoint map, error semantics

Step 8: Respond to the User

For Create mode

Deliver:

  1. The complete SKILL.md content

  2. All reference files

  3. A README.md for the skill directory

  4. The quality scorecard (from Step 5)

  5. Suggested next steps (test it, iterate, publish)

For Improve mode

Deliver:

  1. Before/after quality scores

  2. Summary of changes made

  3. Remaining improvement opportunities

For Evaluate mode

Deliver:

  1. The full quality scorecard

  2. Comparison to the reference skills

  3. Prioritized improvement list


Reference Files

  • references/dynamic-calling.md -- Core reference: Detection flows, decision trees, method fallbacks, runtime awareness, and multi-tool adaptation patterns with annotated examples from production skills

  • references/writing-guide.md -- How to write each SKILL.md section for current Claude models: descriptions, detection flows, instructions matched to fragility, defaults, output contracts, and reference files

  • references/architecture-patterns.md -- Linear, Router, Methodology, Widget, and API Wrapper patterns with examples and anti-patterns

  • references/frontmatter-guide.md -- Complete YAML frontmatter field reference (name, description, platform, env vars, config, credentials)

  • references/quality-rubric.md -- 10-dimension scoring rubric with 1-10 scales, examples, and score interpretation

  • references/skill-examples.md -- Annotated excerpts from top skills showing why specific patterns work

Files

references/dynamic-calling.md

Dynamic Calling Patterns

Skills that touch external tools should detect what's available at runtime and adapt, rather than hardcoding a single tool or method — environments differ, and a hardcoded tool fails for every user who lacks it. This reference catalogs every dynamic pattern used in production skills.

Core principle: The skill should work in as many environments as possible. A user with gh CLI gets the rich path. A user with only git gets the minimal path. A user with nothing gets clear install instructions. The skill never fails silently because a hardcoded tool is missing.


Pattern 1: Detection Flow with Decision Tree

The foundational pattern. Every skill that touches external tools starts here.

Structure
## Step 1: Detection Flow

` ` `
!`(command -v tool_a && tool_a --version) 2>/dev/null || echo "TOOL_A_MISSING"`
` ` `

` ` `
!`(command -v tool_b && tool_b --version) 2>/dev/null || echo "TOOL_B_MISSING"`
` ` `

**Decision tree:**
1. If `tool_a` available and authenticated → use Method 1 (preferred)
2. If `tool_a` available but not authenticated → guide auth setup, then Method 1
3. If `tool_a` missing but `tool_b` available → use Method 2 (fallback)
4. If neither available → install `tool_a` (preferred) or `tool_b` (lighter)
Real Example: github-auth (gh vs git)
## Detection Flow

` ` `bash
git --version
gh --version 2>/dev/null || echo "gh not installed"
gh auth status 2>/dev/null || echo "gh not authenticated"
git config --global credential.helper 2>/dev/null || echo "no git credential helper"
` ` `

**Decision tree:**
1. If `gh auth status` shows authenticated → use `gh` for everything
2. If `gh` is installed but not authenticated → use "gh auth" method
3. If `gh` is not installed → use "git-only" method (no sudo needed)

Why this works:

  • Detects 4 dimensions: git existence, gh existence, gh auth state, git credential state

  • Three clear paths, each self-contained

  • The skill works for everyone — from minimal git-only setups to full gh installations


Pattern 2: Multi-Stage Detection (Install → Auth → Health)

For tools that need multiple checks before they're usable.

Structure
!`(command -v tool && tool status 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`

This single command checks three things:

  1. Is the tool installed? (command -v tool)

  2. Can it run? (tool status)

  3. Is it healthy? (output + echo "READY")

Real Example: discord-reader (opencli)
` ` `
!`(command -v opencli && opencli discord-app status 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`
` ` `

If `READY`, skip to Step 2.
If `NOT_INSTALLED`, install first: `npm install -g @jackwener/opencli`
If `SETUP_NEEDED`, guide through CDP setup.
Real Example: telegram-reader (tdl — two-stage)
` ` `
!`command -v tdl 2>/dev/null && echo "TDL_INSTALLED" || echo "TDL_NOT_INSTALLED"`
` ` `

` ` `
!`tdl chat ls --limit 1 2>/dev/null && echo "TDL_AUTHENTICATED" || echo "TDL_NOT_AUTHENTICATED"`
` ` `

Decision tree:
1. Both OK → proceed to Step 2
2. Installed but not authenticated → run `tdl login`
3. Not installed → install via `go install` or binary download

Why two-stage: Some tools pass --version but fail on actual operations because auth is missing. Checking auth separately gives better error messages.


Pattern 3: Library Version Detection with Fallback

For Python skills that need specific libraries.

Structure
!`python3 -c "exec('try:\n import lib\n print(\'lib \' + lib.__version__)\nexcept Exception:\n print(\'LIB_NOT_INSTALLED\')')"`
Real Example: stock-correlation (multi-package + algorithm fallback)
` ` `
!`python3 -c "exec('try:\n import yfinance, pandas, numpy\n print(f\'yfinance={yfinance.__version__} pandas={pandas.__version__} numpy={numpy.__version__}\')\nexcept Exception:\n print(\'DEPS_MISSING\')')"`
` ` `

If `DEPS_MISSING`, install:
` ` `python
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance", "pandas", "numpy"])
` ` `

And later in the clustering step:

Note: if `scipy` is not available, fall back to sorting by average correlation
instead of hierarchical clustering.

Key insight: The detection happens at Step 1, but the fallback logic is also in the core step that uses the optional dependency. Don't just detect — also provide alternatives at each usage point.


Pattern 4: API Key Detection

For skills that wrap external APIs.

Structure
!`echo $API_KEY | head -c 8 && echo "...KEY_SET" || echo "KEY_NOT_SET"`
Real Example: fintel-data
` ` `
!`echo $FINTEL_API_KEY | head -c 8 && echo "...KEY_SET" || echo "KEY_NOT_SET"`
` ` `

If `KEY_NOT_SET`:
- Ask the user for their Fintel API key
- Guide them to https://fintel.io/api to get one
- Once provided, export it: `export FINTEL_API_KEY=<key>`
Real Example: finance-sentiment (multi-line Python check)
` ` `
!`python3 -c "
import os
key = os.environ.get('ADANOS_API_KEY', '')
if key:
    print(f'KEY={key[:8]}...SET')
else:
    print('KEY_NOT_SET')
" 2>/dev/null || echo "PYTHON_UNAVAILABLE"`
` ` `

Why show partial key: Showing the first 8 characters lets the user verify they have the right key without exposing the full secret.


Pattern 5: Live Data Injection

For skills that need current market data, not stale defaults.

Structure
!`python3 -c "exec('try:\n import yfinance as yf\n p=yf.Ticker(\'^GSPC\').fast_info[\'lastPrice\']\n print(f\'PRICE={p:.0f}\')\nexcept Exception:\n print(\'PRICE_UNAVAILABLE\')')"`
Real Example: options-payoff (current SPX price)
**Current SPX reference price:**
` ` `
!`python3 -c "exec('try:\n import yfinance as yf\n p=yf.Ticker(\'^GSPC\').fast_info[\'lastPrice\']\n print(f\'SPX ≈ {p:.0f}\')\nexcept Exception:\n print(\'SPX price unavailable — check market data\')')"`
` ` `

Why this matters for options: A default spot price of "5000" becomes wrong within days. Live injection means the payoff chart is immediately useful without manual adjustment.

Fallback design: When live data fails, the skill still works — it just uses a static default and tells the user to check.


Pattern 6: Frontmatter Conditional Activation

Skills can declare themselves as fallbacks or require specific tools at the YAML level.

fallback_for_toolsets — Activate when primary is missing
metadata:
  hermes:
    fallback_for_toolsets: [web]

Real example: duckduckgo-search only appears when the web toolset (with API keys) is NOT configured. Once the user sets up Firecrawl, the skill auto-hides.

requires_toolsets — Only show when tools exist
metadata:
  hermes:
    requires_toolsets: [terminal]

Real example: docker-management only appears when terminal tools are active — it makes no sense on Claude.ai.

Combining with runtime detection

Frontmatter controls whether the skill loads. Runtime detection controls how the skill behaves once loaded. Use both:

# Frontmatter: only load when terminal is available
metadata:
  hermes:
    requires_toolsets: [terminal]
# Runtime: detect WHICH terminal tools are available
!`command -v gh && echo "GH_OK" || echo "GH_MISSING"`

Pattern 7: Dual-Method Skills (CLI preferred, Python fallback)

The most common pattern for data-fetching skills.

Structure
## Step 2: Fetch Data

### If CLI detected (preferred)
` ` `bash
ddgs text -k "query" -m 5 -o json
` ` `

### If Python library available (fallback)
` ` `python
from ddgs import DDGS
with DDGS() as ddgs:
    results = list(ddgs.text("query", max_results=5))
` ` `

### If neither available
Install the CLI: `pip install ddgs`
Real Example: duckduckgo-search decision tree
1. If `ddgs` CLI is installed → prefer `terminal` + `ddgs` (fastest, simplest)
2. If `ddgs` CLI is missing → do not assume `execute_code` can import `ddgs`
3. If the user wants DuckDuckGo specifically → install `ddgs` first
4. Otherwise → fall back to built-in web/browser tools

Critical runtime awareness:

Terminal and execute_code are separate runtimes. A successful shell install does not guarantee execute_code can import ddgs. Never assume third-party Python packages are preinstalled inside execute_code.


Pattern 8: Runtime Environment Awareness

Different execution environments have different capabilities. Skills must not assume.

Key distinctions
EnvironmentHas shellHas pipHas browserHas internet
Claude Code (CLI)YesYesNo (unless MCP)Yes
Claude.ai (web)SandboxedLimitedNoRestricted
Hermes Agent (terminal)YesYesConfigurableYes
execute_code sandboxIsolatedPre-installed onlyNoVaries
Rule: Test in the runtime you'll use
# WRONG — installs in terminal, uses in execute_code
` ` `bash
pip install ddgs
` ` `
` ` `python
# In execute_code — this might fail because it's a different runtime!
from ddgs import DDGS
` ` `

# RIGHT — verify in the runtime where you'll use it
` ` `python
# Check if available in this runtime
try:
    from ddgs import DDGS
    print("DDGS available")
except ImportError:
    import subprocess, sys
    subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "ddgs"])
    from ddgs import DDGS
` ` `

Pattern 9: Graceful Degradation Chain

When multiple tools can do the same job, prefer the richest and fall back gracefully.

Structure
Preferred (richest) → Standard → Minimal → Manual instruction
Example: Web search degradation
1. web_search tool (if available) → richest, API-backed
2. ddgs CLI (if installed) → free, no key needed
3. ddgs Python library (if importable) → same but in sandbox
4. curl + manual URL → always works but crudest
5. Ask user to search → last resort
Example: GitHub operations degradation
1. gh CLI authenticated → full API (PRs, issues, reviews, CI)
2. gh CLI not authenticated → guide auth, then full API
3. git + curl + token → basic API (push, pull, simple operations)
4. git only (no token) → read-only operations on public repos

Anti-Patterns to Avoid

Hardcoded single tool
# BAD — fails immediately if yfinance not installed
` ` `python
import yfinance as yf
data = yf.download("AAPL")
` ` `

Fix: Always detect first, then use.

Assuming install means available
# BAD — installs in shell, assumes execute_code has it
pip install ddgs
# ... later in execute_code ...
from ddgs import DDGS  # might fail!

Fix: Check in the same runtime where you'll use the library.

Static tool paths
# BAD — path differs across OS and installs
/usr/local/bin/gh auth status

Fix: Use command -v gh to find the tool wherever it is.

No fallback on detection failure
# BAD — no || fallback, command hangs or errors silently
!`tool_a --version`

Fix: Always use || echo "SENTINEL" fallbacks.

Detecting once, ignoring later
# BAD — detects scipy in Step 1 but hardcodes scipy.cluster in Step 4

Fix: Every step that uses an optional tool should have inline fallback logic, not just the detection step.


Quick Reference: Detection Commands

What to detectCommand
CLI tool existscommand -v tool 2>/dev/null
CLI tool versiontool --version 2>/dev/null
Tool is authenticatedtool auth status 2>/dev/null
Python module availablepython3 -c "exec('try:\n import mod\n print(mod.__version__)\nexcept Exception:\n print(\'MOD_NOT_INSTALLED\')')"
Env var is setecho $VAR | head -c 8 && echo "...SET"
File existstest -f ~/.config/tool/creds && echo "OK"
API is reachablecurl -sf endpoint | head -c 100
Runtime has internetcurl -sf https://httpbin.org/get > /dev/null && echo "OK"

All commands should end with || echo "FALLBACK_SENTINEL" for graceful handling.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Alex Yang
Publisher
Alex Yang (Community)
Source
himself65/finance-skills · plugins/skill-creator/skills/skill-creator · commit a085078
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Alex Yang.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download skill-creator.zip