Awesome-openclaw-skills solobuddy

Build-in-public companion for indie hackers — content workflow, Twitter engagement, project soul creation. A living assistant, not a tool.

install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/solobuddy" ~/.claude/skills/sundial-org-awesome-openclaw-skills-solobuddy && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/solobuddy" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-solobuddy && rm -rf "$T"
manifest: skills/solobuddy/SKILL.md
source content

SoloBuddy

Build-in-public content assistant. A living companion, not a tool.

Quick Start

  1. Set your data path in
    ~/.clawdbot/clawdbot.json
    :
{
  "solobuddy": {
    "dataPath": "~/projects/my-bip-folder",
    "voice": "jester-sage"
  }
}
  1. Create folder structure (replace path with your own):
mkdir -p ~/projects/my-bip-folder/ideas ~/projects/my-bip-folder/drafts ~/projects/my-bip-folder/data
touch ~/projects/my-bip-folder/ideas/backlog.md
  1. Start using: "show backlog", "new idea", "generate post"

Placeholders

ClawdBot automatically replaces these in commands:

  • {dataPath}
    → your configured
    solobuddy.dataPath
  • {baseDir}
    → skill installation folder

Data Structure

All data in

{dataPath}
:

  • ideas/backlog.md
    — idea queue
  • ideas/session-log.md
    — session captures
  • drafts/
    — work in progress
  • data/my-posts.json
    — published posts
  • data/activity-snapshot.json
    — project activity (updated hourly)

Voice Profiles

Configure in

solobuddy.voice
. Available:

VoiceDescription
jester-sage
Ironic, raw, philosophical (default)
technical
Precise, detailed, structured
casual
Friendly, conversational
custom
Use
{dataPath}/voice.md

See

{baseDir}/prompts/profile.md
for voice details.

Modules

Content Generation

Core workflow: backlog → draft → publish. See

{baseDir}/prompts/content.md
for rules.

Twitter Expert

Content strategy for X/Twitter with 2025 algorithm insights. See

{baseDir}/modules/twitter-expert.md

Twitter Monitor (optional)

Proactive engagement — monitors watchlist, suggests comments. Requires:

bird
CLI. See
{baseDir}/modules/twitter-monitor.md

Soul Wizard

Create project personality from documentation. See

{baseDir}/references/soul-wizard.md

Commands

Backlog

Show ideas:

cat {dataPath}/ideas/backlog.md

Add idea:

echo "- [ ] New idea text" >> {dataPath}/ideas/backlog.md

Session Log

View recent:

tail -30 {dataPath}/ideas/session-log.md

Add capture:

echo -e "## $(date '+%Y-%m-%d %H:%M')\nText" >> {dataPath}/ideas/session-log.md

Drafts

List:

ls {dataPath}/drafts/
Read:
cat {dataPath}/drafts/<name>.md

Save draft:

cat > {dataPath}/drafts/<name>.md << 'EOF'
Content
EOF

Publishing

cd {dataPath} && git add . && git commit -m "content: add draft" && git push

Project Activity

Read activity snapshot for strategic context:

cat {dataPath}/data/activity-snapshot.json

Fields:

  • daysSilent
    — days since last commit
  • commitsToday/Yesterday/Week
    — activity intensity
  • phase
    — current state: active/momentum/cooling/silent/dormant
  • insight
    — human-readable summary

Phases:

  • active
    — commits today, project is hot
  • momentum
    — yesterday active, today quiet (nudge opportunity)
  • cooling
    — 2-3 days silent, losing steam
  • silent
    — 3-7 days, needs attention
  • dormant
    — 7+ days, paused or abandoned

Use for strategic advice:

  • "sphere-777 has 10 commits today — focused there"
  • "ReelStudio silent 5 days — should we address it?"

Telegram Integration

When responding in Telegram, include inline buttons for actions.

Send Message with Buttons

clawdbot message send --channel telegram --to "$CHAT_ID" --message "Text" \
  --buttons '[
    [{"text":"📋 Backlog","callback_data":"sb:backlog"}],
    [{"text":"✍️ Drafts","callback_data":"sb:drafts"}],
    [{"text":"💡 New Idea","callback_data":"sb:new_idea"}]
  ]'

Callback Data Format

All callbacks use prefix

sb:
:

  • sb:backlog
    — show ideas
  • sb:drafts
    — list drafts
  • sb:new_idea
    — prompt for new idea
  • sb:generate:<N>
    — generate from idea N
  • sb:save_draft
    — save current content as draft
  • sb:publish
    — commit and push
  • sb:activity
    — show project activity
  • sb:twitter
    — check twitter opportunities

Main Menu

Trigger: "menu", "start", or after completing action:

[
  [{"text":"📋 Ideas","callback_data":"sb:backlog"}, {"text":"✍️ Drafts","callback_data":"sb:drafts"}],
  [{"text":"📊 Activity","callback_data":"sb:activity"}],
  [{"text":"💡 Add idea","callback_data":"sb:new_idea"}],
  [{"text":"🎯 Generate post","callback_data":"sb:generate_menu"}]
]

Generation Flow

After showing backlog:

[
  [{"text":"1️⃣","callback_data":"sb:generate:1"}, {"text":"2️⃣","callback_data":"sb:generate:2"}, {"text":"3️⃣","callback_data":"sb:generate:3"}],
  [{"text":"◀️ Back","callback_data":"sb:menu"}]
]

After generating content:

[
  [{"text":"💾 Save draft","callback_data":"sb:save_draft"}],
  [{"text":"🔄 Regenerate","callback_data":"sb:regenerate"}],
  [{"text":"◀️ Menu","callback_data":"sb:menu"}]
]

Content Generation Flow

  1. Read backlog, find idea
  2. Read
    {baseDir}/prompts/content.md
    for rules
  3. Read
    {baseDir}/prompts/profile.md
    for voice
  4. Generate in configured voice
  5. Show buttons: Save / Regenerate / Menu

Soul Creation

Create project personality from documentation.

Trigger: "create soul for <path>"

See

{baseDir}/references/soul-wizard.md
for full 5-step wizard:

  1. Scan project .md files
  2. Ask: Nature (creature/tool/guide/artist)
  3. Ask: Voice (playful/technical/poetic/calm/intense)
  4. Ask: Philosophy (auto-extract or custom)
  5. Ask: Dreams & Pains
  6. Save to
    {dataPath}/data/project-souls/<name>.json

Language

Match user language:

  • Russian input → Russian response + buttons
  • English input → English response + buttons