Skill: 1477009639zw-blip/beta-skill-maker (version 1.0.0)

--- name: skill-maker description: Creates production-ready SKILL.md files for OpenClaw AI agents. Takes a skill concept and outputs a complete, publishable SKILL.md with metadata, instructions, and examples. metadata: openclaw: emoji: "📦" requires: bins: - python3 - markdown always: false --- # Skill Maker Creates complete, production-ready `SKILL.md` files for OpenClaw agents. Perfect for publishing on ClawHub or ugig.net. ## Usage ```bash python3 skill_maker.py --name "my-skill" --desc "Does X" --output ./my-skill/ ``` ## What it generates - `SKILL.md` — full skill file with frontmatter, instructions, examples - `references/` — reference docs if applicable - `README.md` — quick start guide ## Input options | Flag | Description | |------|-------------| | `--name` | Skill name (lowercase, URL-safe) | | `--desc` | Short description (<50 chars) | | `--output` | Output directory | | `--category` | Category: productivity/trading/research/automation | | `--emoji` | Emoji icon | ## Output structure ``` {skill-name}/ ├── SKILL.md # Main skill file ├── references/ # Supporting docs │ └── overview.md # Feature breakdown └── README.md # Quick start ``` ## Example ```bash python3 skill_maker.py \ --name "market-brief" \ --desc "Generates hourly market briefings" \ --category trading \ --emoji "📊" \ --output ./market-brief/ ``` ## Notes - All metadata (env/bins) must match actual code references - No obfuscated shell commands allowed - Single bundle ≤ 50MB - MIT-0 license by default

path: skill_maker.py
content: #!/usr/bin/env python3
"""Skill Maker — generates SKILL.md files for OpenClaw AI agents"""
import argparse
import os
import sys

TEMPLATE = """---
name: {name}
description: {desc}
metadata:
  openclaw:
    emoji: "{emoji}"
    requires:
      bins: [{bins}]
      env: [{env}]
    always: false
---

# {name}

{body}

## Usage

```bash
{name_lower} {args_str}
```

## Features

- Feature 1
- Feature 2
- Feature 3

## Examples

### Example 1

```bash
{name_lower} example1
```

### Example 2

```bash
{name_lower} example2
```

## Notes

- Requires: {bins}
- MIT-0 License
"""

README_TEMPLATE = """# {name}

> {desc}

## Quick Start

```bash
python3 {name_lower}.py --help
```

## Installation

```bash
# Clone or download
# No external dependencies required
```

## License

MIT-0
"""

def main():
    parser = argparse.ArgumentParser(description='Create a SKILL.md for OpenClaw')
    parser.add_argument('--name', required=True, help='Skill name')
    parser.add_argument('--desc', required=True, help='Short description (<50 chars)')
    parser.add_argument('--output', required=True, help='Output directory')
    parser.add_argument('--category', default='productivity', help='Category')
    parser.add_argument('--emoji', default='🛠️', help='Emoji icon')
    parser.add_argument('--bins', default='', help='Required binaries (comma-separated)')
    parser.add_argument('--env', default='', help='Required env vars (comma-separated)')
    args = parser.parse_args()

    name_lower = args.name.lower().replace(' ', '-')
    os.makedirs(args.output, exist_ok=True)

    skill_md = TEMPLATE.format(
        name=args.name,
        name_lower=name_lower,
        desc=args.desc,
        emoji=args.emoji,
        bins=args.bins or 'python3',
        env=args.env or '',
        body=f'Generated skill: {args.name}',
        args_str='--input <file>'
    )

    with open(os.path.join(args.output, 'SKILL.md'), 'w') as f:
        f.write(skill_md)

    readme = README_TEMPLATE.format(name=args.name, name_lower=name_lower, desc=args.desc)
    with open(os.path.join(args.output, 'README.md'), 'w') as f:
        f.write(readme)

    os.makedirs(os.path.join(args.output, 'references'), exist_ok=True)
    with open(os.path.join(args.output, 'references', 'overview.md'), 'w') as f:
        f.write(f'# {args.name} — Overview\n\n{args.desc}\n')

    print(f'✅ Skill created at {args.output}/')
    print(f'  - SKILL.md')
    print(f'  - README.md')
    print(f'  - references/')

if __name__ == '__main__':
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)