Best for
- Use when the user wants to: (1) create a new skill from scratch, (2) edit or improve an existing skill, (3) review or clean up a SKILL.
shiwenwen/hope-agent/skills/ha-skill-creator/SKILL.md
Create, edit, improve, or audit Hope Agent skills. Use when the user wants to: (1) create a new skill from scratch, (2) edit or improve an existing skill, (3) review or clean up a SKILL.md file, (4) run evaluations to test skill effectiveness, (5) optimize skill descriptions for better trigger accuracy. Trigger phrases: 'create a skill', 'make a skill', 'improve this skill', 'review skill', 'audit skill'.
Decision brief
Tool for creating new skills and iteratively improving existing ones.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/shiwenwen/hope-agent --skill "skills/ha-skill-creator"Inspect the Agent Skill "ha-skill-creator" from https://github.com/shiwenwen/hope-agent/blob/ee2d729bd514209508989a70f9bdfb6b169b2925/skills/ha-skill-creator/SKILL.md at commit ee2d729bd514209508989a70f9bdfb6b169b2925. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Start with the smallest viable toolset. The default (empty = all tools) is almost never right for a narrow skill — the wider the surface, the more the sub-agent can drift.
Extract information from the current conversation, or ask to learn:
Scaffold the directory with the init helper (picks project vs user root automatically based on whether you're inside a repo):
Determine name, description, and the minimum set of extra fields.
Before writing, show the complete SKILL.md content to the user as a yaml code block for review. After confirmation, write the file and tell the user: - Where it was saved - How to invoke it: / [args] - They can edit SKILL.md directly to adjust
Permission review
The documentation asks the agent to read local files, directories, or repositories.
| Read-only analysis (grep repo, summarize docs) | `[read, grep, glob]` |The documentation asks the agent to run terminal commands or scripts.
python skills/ha-skill-creator/scripts/init_skill.py my-skill \The documentation asks the agent to create, modify, or delete local files.
Before writing, show the complete SKILL.md content to the user as a yaml code block for review. After confirmation, write the file and tell the user:Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 1,485 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Tool for creating new skills and iteratively improving existing ones.
Hope Agent skills are modular, self-contained packages that extend the AI assistant's capabilities with domain knowledge, workflows, and tools. Skills turn a general-purpose AI into a domain-specific expert.
Pick the pattern that matches the skill's shape. Most skills fit cleanly
into one; some mix patterns (e.g. start task-based, add a workflow for
the one complex operation). All three keep the body short by pushing
depth into references/.
1. Workflow-based — sequential process with ordered steps. Best for builds, deployments, delivery pipelines, investigations.
SKILL.md
├── ## Overview
├── ## Step 1 — <setup>
├── ## Step 2 — <main action>
├── ## Step 3 — <verify / publish>
└── ## Troubleshooting (refers to references/*.md per step)
2. Task-based — capability menu, operations are independent. Best for analysis tools and skills offering several unrelated features.
SKILL.md
├── ## Overview
├── ## Quick Start
├── ## Task: <feature A>
├── ## Task: <feature B>
└── ## Task: <feature C>
3. Reference-based — specification / rules / standards. Best for style guides, API schemas, brand rules.
SKILL.md
├── ## Overview
├── ## Core Rules
└── (detailed spec in references/<area>.md, loaded on demand)
skill-name/
├── SKILL.md (required: frontmatter + Markdown instructions)
├── scripts/ (optional: executable scripts, Python/Bash etc.)
├── references/ (optional: reference docs loaded on demand)
└── assets/ (optional: templates, icons, output materials)
skills/ directoryconfig.json extraSkillsDirs~/.hope-agent/skills/.hope-agent/skills/ (relative to cwd, highest precedence)---
# ── Required ──
name: my-skill # Skill identifier (lowercase + hyphens)
description: "Short summary of what the skill does and when to use it."
when_to_use: "Optional Claude-style trigger hint — duplicate the key trigger words in description for OpenAI/AgentSkills portability"
# ── Optional: Identity ──
aliases: [alt-name-1, alt-name-2] # Extra slash-command names for the same skill
# ── Optional: Prerequisites ──
requires:
bins: [git, gh] # All must exist in PATH (AND)
anyBins: [rg, grep] # At least one must exist (OR)
env: [GITHUB_TOKEN] # Required environment variables
os: [darwin, linux] # Supported operating systems
config: [webSearch.provider] # Config paths that must be truthy
always: false # true = skip prerequisite checks; not locked/unclosable
primaryEnv: MY_API_KEY # Primary env var (can be satisfied by apiKey)
# ── Optional: Invocation Control ──
user-invocable: true # Register as /command slash command
disable-model-invocation: false # true = hide from model prompt directory
skillKey: custom-key # Custom config lookup key
# ── Optional: Command Dispatch ──
command-dispatch: tool # "tool" or "prompt"
command-tool: exec # Tool to bind when dispatch=tool
command-arg-mode: raw # Argument passing mode
argument-hint: "<query>" # Claude canonical UI placeholder hint (aliases: argumentHint, command-arg-placeholder)
command-arg-options: [on, off] # Fixed argument options
command-prompt-template: "..." # Template with $ARGUMENTS expansion
# ── Optional: Execution Mode ──
context: inline # "fork" = sub-agent, "inline" = main conversation (see guidance below)
allowed-tools: [read, grep, glob] # Tool whitelist for fork / skill-tool execution; slash inline currently does not enforce it
agent: code-reviewer # Sub-agent type to use when context=fork (optional)
effort: medium # Reasoning effort for forked sub-agent (low|medium|high|xhigh|none)
# ── Optional: Dependency Installation ──
install:
- kind: brew
formula: gh
bins: [gh]
label: "Install GitHub CLI (brew)"
os: [darwin]
- kind: node
package: "@anthropic-ai/sdk"
bins: [anthropic]
- kind: go
module: github.com/user/tool@latest
- kind: uv
package: my-python-tool
---
context: decides where the skill runs. The choice matters: a wrong pick
either pollutes the main conversation with noisy tool output or hides
intermediate state the user needs to steer.
Use fork (sub-agent) when | Use inline (main conversation) when |
|---|---|
The skill runs many exec or read calls whose output is a one-time consumable | The user will react to intermediate output before the skill finishes |
| Work is self-contained — you can hand the caller a summary | You need ask_user_question inside the flow |
| Typical: builds, deployments, packaging, data pipelines | Typical: code review, interactive refactors, iterative writing |
| You explicitly want noise-isolated tool results | Tool calls are few and lightweight (1–3) |
Under the hood fork spawns a sub-agent with the skill's allowed-tools,
runs to completion, and injects only the final summary back into the
parent conversation. The parent's prompt cache stays clean; the sub-agent's
transcript is available on the session detail page but never re-enters
the main turn. agent: and effort: apply only when context: fork.
Start with the smallest viable toolset. The default (empty = all tools) is almost never right for a narrow skill — the wider the surface, the more the sub-agent can drift.
| Skill archetype | Recommended allowed-tools |
|---|---|
| Read-only analysis (grep repo, summarize docs) | [read, grep, glob] |
| File-editing (apply fixes, refactor) | [read, grep, glob, write, edit] |
| Shell-heavy workflow (builds, deployments) | [read, grep, glob, write, edit, exec] + context: fork |
| Networked (web search / fetch) | add [web_search, web_fetch] on top of the archetype above |
Red lines:
subagent, team, or skill — these are meta
tools the skill itself shouldn't re-enter.exec(gh:*)) is not supported yet.
Whitelist is tool-name-only; finer-grained control requires skill-level
wrapper scripts.Instructions the model reads after the skill triggers. Writing principles:
The description is the skill's primary trigger mechanism — the model decides whether to use the skill based on it.
Clearly state what the skill does and when to use it
All "when to use" info goes in the description, not the body (the body loads only after triggering)
Be appropriately aggressive — avoid under-triggering. For example:
Bad: "GitHub operations tool"
Good: "GitHub operations via gh CLI: issues, PRs, CI checks, code review. Use when the user mentions PR status, CI checks, creating issues, merge requests — even if they don't explicitly say 'GitHub'."
Extract information from the current conversation, or ask to learn:
If the conversation already contains a workflow (user says "turn this into a skill"), extract steps, tools used, user corrections, etc. from conversation history.
.hope-agent/skills/<name>/) — workflows
specific to this repo. Ship alongside the code that depends on them.~/.hope-agent/skills/<name>/) — cross-project
universal helpers (GitHub ops, favorite analysis workflows).Scaffold the directory with the init helper (picks project vs user root automatically based on whether you're inside a repo):
python skills/ha-skill-creator/scripts/init_skill.py my-skill \
--resources scripts,references \
--context fork \
--examples
Determine name, description, and the minimum set of extra fields.
Naming conventions (align with the skill-command normalizer):
review-pr, not pull-requests).gh-* for GitHub-specific, ones-* for ONES, stlc-* for client
delivery). Makes the catalog scannable as it grows.name: exactly.Pick the minimum useful field set for your archetype — there are ~20 frontmatter keys but most skills need 5–7:
| Archetype | Fields to fill |
|---|---|
| Minimal portable skill | name, description |
| Claude/Hope trigger split | + when_to_use |
| Slash command skill | + user-invocable, argument-hint |
| Depends on external CLI | + requires.bins, install (for auto-install) |
| Shell-heavy workflow | + context: fork, allowed-tools |
| Analysis-only skill | + context: fork, allowed-tools: [read, grep, glob] |
When in doubt, write less. Fields you don't set fall back to sensible defaults; fields you do set must be kept accurate as the skill evolves.
Run python scripts/init_skill.py <name> to generate a skeleton with
every supported field present as a commented-out stub — delete the ones
you don't need rather than remembering which to add.
Analyze each use scenario:
scripts/references/assets/Follow progressive disclosure:
references/ and specify in the body when to read themSet appropriate degrees of freedom. Think of each instruction like a bridge: wide bridges let the model pick the best route; narrow bridges with cliffs on either side (brittle shell commands, destructive data migrations, APIs where order matters) must be rails, not suggestions.
When in doubt, widen. Over-specified skills age badly — every changed flag, renamed tool, or updated API forces a skill update.
Before writing, show the complete SKILL.md content to the user as a yaml code block for review. After confirmation, write the file and tell the user:
/<skill-name> [args]Create 2-3 realistic test prompts, save to evals/evals.json:
{
"skill_name": "my-skill",
"evals": [
{
"id": 1,
"prompt": "User's task description",
"expected_output": "Description of expected result",
"files": [],
"expectations": [
"Output contains X",
"Used script Y"
]
}
]
}
Full schema in references/schemas.md.
Organize results in <skill-name>-workspace/iteration-<N>/.
For each test case, fan out two parallel subagent runs — both
share the same prompt so the comparison stays fair:
SKILL.md first, then execute the task.Running the two in parallel (not sequentially) matters: sequential runs let later runs borrow context from earlier ones and mask regressions.
agents/grader.md instructions to evaluate each assertionpython scripts/aggregate_benchmark.py <workspace>/iteration-N --skill-name <name>agents/analyzer.md instructions to find patterns hidden in aggregate statspython eval-viewer/generate_review.py <workspace>/iteration-N --skill-name "my-skill" to launch the browser viewerWhen improving a skill based on user feedback:
scripts/ rather than restating
the snippet in every Step.Use blind A/B when you can't trust yourself (or the user) to compare two skill variants fairly. Typical triggers:
Protocol:
A/ and B/ before showing the comparator — the
judge must not know which came from which variant.references/api.md before
calling exec"), which then becomes your next iteration target.For non-subjective changes (a bug fix, a missing field) a single human review loop is faster. Reserve blind A/B for "which phrasing works better" style questions.
After completing a skill, optimize the description for better trigger accuracy:
Generate trigger evaluation set: create 20 queries (~10 should-trigger + ~10 should-not-trigger)
User review: show the evaluation set for the user to confirm or modify
Iterative optimization: improve the description based on trigger test results until both should-trigger and should-not-trigger accuracy are satisfactory
Agent prompts (loaded by the model on demand during evaluation):
agents/grader.md — grading instructions for
evaluating assertions with evidence extraction.agents/comparator.md — blind A/B comparison
protocol.agents/analyzer.md — post-hoc analysis for
winner-pattern identification and improvement suggestions.Schemas:
references/schemas.md — JSON schemas for
evals.json, grading.json, benchmark.json, and the comparison /
analysis records.Scripts (executable directly, no need to read into context):
scripts/init_skill.py — scaffold a new
skill with full-frontmatter template + optional resource subdirs.scripts/quick_validate.py — frontmatter
shape + kebab-case name + length checks.scripts/package_skill.py — produce a
.skill archive (zip) for distribution, runs validation first.scripts/run_eval.py +
run_loop.py — dispatch eval runs via
sub-agent.scripts/aggregate_benchmark.py —
combine per-case grading into benchmark stats.scripts/improve_description.py —
optimize description for trigger accuracy.scripts/generate_report.py +
eval-viewer/generate_review.py —
render HTML review of an iteration.scripts/test_quick_validate.py +
scripts/test_package_skill.py —
self-tests; run via python -m unittest from inside scripts/.Skills should only contain files the AI agent needs to complete its task. Do not create:
These only add clutter. Skills are for AI agents, not human-readable manuals.
Frequently asked questions
Tool for creating new skills and iteratively improving existing ones.
The source record exposes this install command: npx skills add https://github.com/shiwenwen/hope-agent --skill "skills/ha-skill-creator". Inspect the command and pinned source before running it.
Static rules flagged read-files, exec-script, write-files in the source; the page lists the matching lines and excerpts.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).
tenequm/skills
Decision validation and thinking frameworks for startup founders. Use when you need to pressure-test a decision, validate your next steps, think through strategic options, or sanity-check your approach. Triggers on phrases like "should I", "help me think through", "is this the right move", "validate my thinking", "what am I missing". Covers fundraising, customer development, runway management, prioritization, and crypto/web3 founder challenges.