agentsclimarketplace

Cron composer

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

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.

One thing 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.

What its author says it does

Copied from the file, not written here

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.

SKILL.md

4.0 KB, 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.

Keep looking

Skills are one crate of 328,083. 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.