Install
$ agentstack add skill-alxxpersonal-forge-skill-forge ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Skill Forge
Generate or improve skills for LLM agent tools (Claude Code, Cursor, Crush, and any SKILL.md-compatible system). Research-backed, based on official docs, plugin source, and real-world skill audits.
When to Use
- Creating a new skill from scratch
- Improving an existing skill's description, structure, or settings
- Auditing a skill for common mistakes
- Deciding between rule vs skill vs CLAUDE.md for a piece of context
Step 1: Understand the Request
If $ARGUMENTS points to an existing SKILL.md, read it first. Otherwise, ask:
- What does it do? - the core capability or workflow
- Who triggers it? - user only (
disable-model-invocation: true), model auto (default), or background (user-invocable: false) - Side effects? - does it commit, deploy, send messages, modify state?
- Scope? - personal (
~/./skills/), project (./skills/), or plugin?
Step 2: Choose the Right Mechanism
These paths use .claude/ as example but apply to any agent that supports SKILL.md format (Crush, Cursor, etc.):
| Put here | When | |----------|------| | CLAUDE.md / agent config | Rule applies to ALL work, every session, short | | ./rules/ | Applies only when touching specific file types (use paths frontmatter) | | ./skills/ | On-demand workflow, detailed reference, or behavioral mode |
Don't make a skill when a rule or CLAUDE.md line would suffice.
Step 3: Write the Frontmatter
Required fields
---
name: skill-name # lowercase, hyphens, max 64 chars
description: ... # THE most important field. See below.
---
Optional fields
| Field | Use when | |-------|----------| | disable-model-invocation: true | Side effects (commits, deploys), behavioral modes, timing-sensitive workflows | | user-invocable: false | Background knowledge Claude should absorb passively | | argument-hint: "[hint]" | Skill takes input - shows in autocomplete | | allowed-tools: Read, Grep | Restrict or pre-approve tools | | context: fork | Run in isolated subagent (research, batch ops, analysis) | | agent: Explore | Subagent type when using context: fork |
Invocation matrix
| Setting | User invokes | Claude invokes | Description in context | |---------|-------------|---------------|----------------------| | (default) | yes | yes | yes | | disable-model-invocation: true | yes | no | no | | user-invocable: false | no | yes | yes |
Key insight: with disable-model-invocation: true, the description is NOT in context at all. Don't over-optimize the description - write it for your own docs reference only.
Step 4: Write the Description
The description is what Claude pattern-matches against to decide whether to load the skill. There is NO algorithmic routing - Claude's language model reads all descriptions and semantically matches.
Formula
- What it does - one sentence, outcome-first
- Trigger phrases - exact words: "Use when user says X, Y, Z"
- Anti-triggers - "NOT for..." if false positives are a risk
- Prerequisites - required setup if any
Rules
- Under 60 words
- Every word costs token budget (2% of context window shared across ALL skill descriptions)
- Description handles matching only - body handles instructions
- Don't repeat body content in description
- Be slightly "pushy" - Claude undertriggers by default
Good example
> "Translates Figma designs into production-ready code with 1:1 visual fidelity. Use when implementing UI from Figma files, when user mentions 'implement design', 'generate code', 'build Figma design', or provides Figma URLs. Requires Figma MCP server connection."
Bad example
> "Use when user wants to plan something" - too vague, false positives everywhere.
Step 5: Write the Body
Structure
# Skill Title
Brief context sentence.
## When to Use
(if not covered by description)
## Process / Steps
1. Step one
2. Step two
## Rules / Constraints
- Rule one
- Rule two
## Examples (if applicable)
Show patterns Claude should follow.
## Validation / Checklist (if applicable)
How to verify output quality.
Rules
- Under 500 lines. Full SKILL.md loads into context when invoked. Move reference material to supporting files.
- Use $ARGUMENTS if the skill takes input. Without it, Claude Code appends
ARGUMENTS:at the end which is messier. - Numbered lists for sequential steps, bullets for options/rules.
- Bold critical constraints with
**IMPORTANT:**. - Say "do not skip steps" explicitly when order matters.
- H2 for major sections, H3 for sub-sections. Max 2 heading levels.
Supporting files
Put adjacent to SKILL.md in the skill directory:
examples.md- example inputs/outputsreference.md- detailed reference docsscripts/helper.sh- executable scripts
Reference them from SKILL.md so Claude knows to load them. Files not accessed consume zero tokens.
Dynamic content injection
Skills support shell command output injection with ! prefix:
!\git branch --show-current\- inject current branch!\ls src/\- inject file listing
Use for context that changes between invocations.
Step 6: Validate
Run this checklist on the generated skill:
- [ ] Description under 60 words
- [ ] Description is trigger-focused (what/when), not instruction-focused (how)
- [ ] Body under 500 lines
- [ ] No duplication between description and body
- [ ] Correct invocation setting for the use case (side effects =
disable-model-invocation: true) - [ ]
$ARGUMENTSused if skill takes input - [ ] No vague trigger phrases that cause false positives
- [ ] No
context: forkon reference-only content (subagent gets instructions with no task) - [ ] Critical constraints are bolded
- [ ] Steps are numbered when order matters
- [ ] Supporting files referenced if body would exceed 500 lines
Common Mistakes
- Vague descriptions - "Use when user wants to plan" triggers on everything
- Missing
disable-model-invocation: trueon side-effect skills - Claude will auto-commit, auto-deploy - Body too long - 500+ lines burns context. Split into supporting files.
- Redundant description + body - description matches, body instructs. Don't duplicate.
context: forkon reference content - subagent gets instructions with no actionable task- Over-explaining in description - the description isn't the instructions
- Missing NOT conditions - for behavioral modes, add explicit "NEVER activate unless..."
user-invocable: falseon things users should manually trigger - confusing
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: alxxpersonal
- Source: alxxpersonal/forge
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.