This workspace contains a minimal template and generator for OpenClaw skills.
skills/template/SKILL.md: reusable AgentSkills/OpenClaw-compatible template.skills/newsroom/SKILL.md: a ready-made newsroom skill tailored to the current OpenClaw news workflow.scripts/generate-skill.py: stdlib-only scaffold generator.scripts/validate-skill.py: stdlib-only linter forSKILL.mdfiles.tests/test_generate_skill.py: smoke test for the generator.tests/test_validate_skill.py: validation test suite for the linter.
python3 scripts/generate-skill.py breaking-news \
--description "Summarize live stories." \
--homepage "https://example.com/skills/breaking-news" \
--emoji "📰" \
--require-bin uv \
--require-any-bin python3 \
--require-any-bin python \
--require-env OPENAI_API_KEY \
--require-config browser.enabled \
--install-brew uv \
--install-node @anthropic-ai/claude-code \
--install-json '{"id":"download-tool","kind":"download","url":"https://example.com/tool.zip","archive":"zip","label":"Download tool"}'This creates skills/breaking-news/SKILL.md.
Generate the built-in newsroom preset:
python3 scripts/generate-skill.py --preset newsroomGenerate a Telegram-oriented newsroom preset plus helper files:
python3 scripts/generate-skill.py --preset telegram-newsroom --with-helper-filesThe telegram-newsroom preset ships with a direct slash-command dispatch to newsroom_brief using raw args.
Override the preset name or selected defaults when needed:
python3 scripts/generate-skill.py newsroom-ar --preset newsroom --emoji "🗞"--preset newsroom: generates a newsroom-ready skill with the current OpenClaw news workflow baked in--preset telegram-newsroom: generates a Telegram-ready newsroom skill--with-helper-files: writes preset-specific helper files such as example prompts and output templates--require-bin: addsmetadata.openclaw.requires.bins--require-any-bin: addsmetadata.openclaw.requires.anyBins--require-env: addsmetadata.openclaw.requires.env--require-config: addsmetadata.openclaw.requires.config--install-brew: adds a Homebrew installer object--install-node: adds a Node installer object--install-go: adds a Go installer object--install-json: appends a raw installer JSON object for advanced cases
python3 -m unittest tests/test_generate_skill.py
python3 -m unittest tests/test_validate_skill.pypython3 scripts/validate-skill.py skills/quick-news
python3 scripts/validate-skill.py skills/research-browser --jsonThe validator also rejects unreplaced template placeholders such as __BODY__ and __METADATA_JSON__.