agentsclimarketplace

Cron composer

Skill suryast/free-ai-agent-skills/cron-composer

Composable block system for OpenClaw cron job prompts. Assembles cron prompts from reusable markdown blocks so cross-cutting changes (e.g. git identity, error handling) only need updating in one place. Use when managing multiple cron jobs, authoring a cron manifest, composing blocks into prompts, running cron-compose.py, or asking about cron prompt assembly, block composition, manifest format, or `apply`/`lint`/`diff`/`sync`/`stats` commands.From its SKILL.md

Install
npx -y skills add suryast/free-ai-agent-skills --skill cron-composer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 5 commands, including `python3 "$SKILL_DIR/scripts/cron-compose.py" "$SKILL_DIR/example-manifest.yaml" list` and 4 more.

SKILL.md

4.0 KB, 892 tokens by cl100k_base, as published. Nobody here has run it

Cron Composer

🧩 STARTER_CHARACTER = 🧩

Composable block system for OpenClaw cron job prompts. Define reusable blocks once; assemble prompts from them via a YAML manifest.

Why: When you have many cron jobs sharing common behaviours (git identity, error handling, backup patterns), editing each prompt individually is error-prone. Cron Composer centralises shared logic in block files and assembles final prompts on demand.

Quick Start

# Install: copy skill to your skills directory (already done if you're reading this)
SKILL_DIR="$HOME/.openclaw/workspace/skills/cron-composer"

# List all crons in manifest
python3 "$SKILL_DIR/scripts/cron-compose.py" "$SKILL_DIR/example-manifest.yaml" list

# Preview assembled prompt (dry-run)
python3 "$SKILL_DIR/scripts/cron-compose.py" /path/to/my-manifest.yaml apply my-cron --dry-run

# Apply one cron
python3 "$SKILL_DIR/scripts/cron-compose.py" /path/to/my-manifest.yaml apply my-cron

# Apply all crons
python3 "$SKILL_DIR/scripts/cron-compose.py" /path/to/my-manifest.yaml apply --all

# Validate manifest
python3 "$SKILL_DIR/scripts/cron-compose.py" /path/to/my-manifest.yaml lint

Key Concepts

  • Blocks — Markdown files in blocks/<category>/. Prepended to every cron that references them.
  • Manifest — YAML file mapping cron names → block lists + task prompt + variables.
  • Variables{{VAR}} placeholders in blocks/tasks, resolved from the vars: section per cron.

Manifest Format

blocks_dir: /path/to/your/blocks   # absolute or relative to manifest file

crons:
  my-cron-name:
    id: "uuid-from-openclaw-cron-list"
    blocks:
      - env/error-handling        # prepended first
      - env/workspace-context
      - ops/git-commit
      - ops/file-backup
    vars:
      PROJECT: /home/user/myproject   # replaces {{PROJECT}} in blocks + task
      SITE: my-site
    task: |
      Task-specific instructions only. Don't repeat what blocks already cover.
      Check {{PROJECT}}/status.txt and report findings.

Commands

CommandDescription
listTabular view: name, ID, blocks
apply <name>Assemble + push prompt to openclaw cron
apply --allApply every cron in manifest
apply <name> --dry-runPrint assembled prompt without applying
apply <name> --diffShow line diff vs live before applying
lintValidate UUIDs, block files, var coverage
syncDetect drift between manifest and live crons
diff [name]Summarise line changes vs live prompt
statsBlock usage dashboard

Block Categories (convention)

CategoryPurposeExample blocks
env/Environment constraints, always-prependederror-handling, workspace-context
ops/Reusable operationsgit-commit, file-backup
patterns/Multi-step task shape templatescheck-and-fix

Writing Blocks

  1. Create blocks/<category>/<name>.md
  2. Write reusable instructions. Use {{VAR}} for anything job-specific.
  3. Reference as <category>/<name> in manifests (no .md extension).

Good blocks cover one concern (commit, backup, error handling). Keep them short and composable.

blocks_dir Resolution

The assembler resolves blocks relative to blocks_dir in the manifest. You can:

  • Set blocks_dir: to an absolute path
  • Set blocks_dir: relative to the manifest file location
  • Omit blocks_dir: — defaults to a blocks/ directory next to the manifest

Example

See example-manifest.yaml and blocks/ in this skill directory for working examples.

What ships with it: 8 files

25.1 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.