follow-builders-sidecar

by amortalsodyssey

OpenClaw-only sidecar for the original follow-builders skill. Use when the user wants to take over scheduling and delivery without modifying the upstream skill, configure digest delivery, inspect takeover status, or roll back to the original cron.

View Chinese version with editor review

安装

claude skill add --url https://github.com/openclaw/skills

文档

Follow Builders Sidecar

This skill is the external delivery/scheduling layer for the original follow-builders skill.

It does not patch the upstream repo. It only:

  • imports the original config once
  • disables the original digest cron
  • creates and owns its own hourly cron
  • checks upstream feed commits
  • builds the digest
  • delivers it through OpenClaw or Feishu card

Runtime requirements

This skill expects:

  • node for all sidecar scripts
  • python3 for avatar circle-cropping
  • openclaw for cron inspection, job takeover, and message delivery

It also reads and writes local files during normal operation:

  • reads ~/.follow-builders/config.json once during takeover
  • writes ~/.follow-builders-sidecar/config.json
  • writes ~/.follow-builders-sidecar/state.json
  • optionally writes ~/.follow-builders-sidecar/credentials.json for local-only direct Feishu app credentials
  • can reuse OpenClaw-configured Feishu account settings when Feishu card delivery is enabled

When to use this skill

Use this skill when the user asks to:

  • install or take over from the original follow-builders
  • switch digest delivery to the sidecar flow
  • configure timezone / language / daily-vs-weekly / delivery driver
  • check whether takeover worked
  • disable sidecar and optionally restore the original cron

Primary commands

Takeover / setup

Before running setup, ask the user which Feishu card mode they want:

  1. Reuse an existing OpenClaw Feishu account
  2. Configure a local direct Feishu app for this sidecar

If the user chooses direct Feishu app mode, collect:

  • appId
  • appSecret
  • chatId
  • optional domain (feishu by default, lark when needed)

Run:

bash
node scripts/sidecar-setup.js

Optional flags:

  • --driver openclaw_announce|feishu_card
  • --channel <channel>
  • --to <target>
  • --account <accountId>
  • --feishu-mode openclaw_account|direct_credentials
  • --feishu-account <accountId>
  • --feishu-chat-id <chatId>
  • --feishu-app-id <appId>
  • --feishu-app-secret <appSecret>
  • --feishu-domain feishu|lark
  • --avatar-fallback-account <accountId>

Configure

Run:

bash
node scripts/sidecar-configure.js ...

Common flags:

  • --language zh|en|bilingual
  • --timezone <IANA timezone>
  • --frequency daily|weekly
  • --weekly-day monday|...|sunday
  • --driver openclaw_announce|feishu_card
  • --channel <channel>
  • --to <target>
  • --account <accountId>
  • --feishu-mode openclaw_account|direct_credentials
  • --feishu-account <accountId>
  • --feishu-chat-id <chatId>
  • --feishu-app-id <appId>
  • --feishu-app-secret <appSecret>
  • --feishu-domain feishu|lark

Important:

  • After takeover, configuration belongs to the sidecar.
  • Do not tell the user to keep changing the original skill's delivery time.
  • If the user wants a different trigger window, tell them to edit the sidecar cron itself.

Status

Run:

bash
node scripts/sidecar-status.js

Rollback

Run:

bash
node scripts/sidecar-rollback.js --reenable-original

Use --reenable-original only when the user explicitly wants to restore the original cron.

Manual test run

To test the pipeline without sending anything:

bash
node scripts/run-sidecar.js --skip-delivery

Delivery rules

  • default driver is openclaw_announce
  • optional driver is feishu_card
  • Feishu card mode supports:
    • openclaw_account: reuse a Feishu app already configured in OpenClaw
    • direct_credentials: store a local-only Feishu appId/appSecret/chatId for this sidecar
  • feed freshness is based on upstream GitHub commit time
  • only same-local-day commits are valid
  • daily: one successful send per local day
  • weekly: only on the configured weekday, one successful send per week

Upstream compatibility rules

The upstream follow-builders skill may evolve beyond the current three feeds.

When working with this sidecar, always treat upstream evolution as a first-class concern:

  1. Before changing sidecar compatibility logic, inspect the upstream SKILL.md.
  2. Inspect the upstream repo root for all feed-*.json files, not just:
    • feed-x.json
    • feed-podcasts.json
    • feed-blogs.json
  3. If a new upstream feed appears, do not silently ignore it.
  4. First determine whether the new feed can be handled by:
    • an existing adapter
    • a generic pass-through adapter
    • or a new dedicated adapter that must be added
  5. If the sidecar cannot safely interpret the new feed schema yet, explicitly surface that limitation to the user instead of pretending nothing changed.

Design intent:

  • SKILL.md is for agent/operator understanding
  • code-level adapter/registry logic is for runtime compatibility

Do not rely on prose alone for runtime support. A note in SKILL.md helps the agent understand what to inspect, but actual support for a new feed still requires code or schema-level compatibility logic.

External endpoints

The sidecar may contact these external services:

  • https://api.github.com/ to discover upstream feed files and latest relevant commits
  • https://raw.githubusercontent.com/ to load upstream feed JSON and prompts
  • https://publish.twitter.com/oembed to expand quoted tweets
  • podcast RSS hosts declared in config/default-sources.json to repair episode links
  • https://unavatar.io/ to fetch public avatar images
  • https://open.feishu.cn/open-apis/ or https://open.larksuite.com/open-apis/ when Feishu card delivery is enabled

Security and privacy

  • The sidecar does not modify the upstream follow-builders repo.
  • The sidecar does not send local files to arbitrary third-party endpoints.
  • OpenClaw and Feishu routing are used only to deliver the digest the user asked for.
  • Direct Feishu app credentials, when configured, stay in ~/.follow-builders-sidecar/credentials.json and are not intended for repository storage.
  • The sidecar's own local state lives under ~/.follow-builders-sidecar/.

Trust statement

Installing this skill means allowing it to read the user's local follow-builders config once during takeover, call the upstream public feed sources, reuse OpenClaw-configured delivery accounts or optional local direct Feishu credentials, and optionally send digest data to OpenClaw or Feishu. Only install it if you trust that behavior.

Safety rules

  • Never modify the original follow-builders repo during normal operation
  • Never silently re-enable the original cron unless the user asks for rollback
  • If the original cron is found enabled again during runtime, disable it and keep the sidecar as source of truth