Skip to content

feat: LinkedIn Ghostwriter agent skill and drafts#8

Draft
ryaneggz wants to merge 47 commits intomasterfrom
agent/linkedin-ghostwriter
Draft

feat: LinkedIn Ghostwriter agent skill and drafts#8
ryaneggz wants to merge 47 commits intomasterfrom
agent/linkedin-ghostwriter

Conversation

@ryaneggz
Copy link
Copy Markdown
Contributor

Summary

  • Adds the LinkedIn Ghostwriter skill (workspace/.claude/skills/linkedin-ghostwriter/) with style guide, reference posts, draft queue, and extraction script
  • Includes ~130+ auto-generated LinkedIn post drafts from heartbeat cycles (2026-03-28 through 2026-03-29)
  • Wires up the ghostwriter as a HEARTBEAT.md task with a 10-step iterative workflow and mandatory quality checklist
  • Adds iteration memory (workspace/memory/linkedin-ghostwriter-iterations.md) for continuous improvement across cycles
  • Includes Post Bridge skill for social media API integration

Files changed

  • workspace/HEARTBEAT.md — LinkedIn Ghostwriter heartbeat task definition
  • workspace/.claude/skills/linkedin-ghostwriter/ — full skill: SKILL.md, style guide, references, drafts, queue
  • workspace/.claude/skills/post-bridge/ — Post Bridge API skill
  • workspace/memory/ — daily log and ghostwriter iteration memory

Test plan

  • Review draft quality in workspace/.claude/skills/linkedin-ghostwriter/assets/drafts/
  • Verify HEARTBEAT.md task triggers ghostwriter correctly on next heartbeat cycle
  • Confirm iteration memory captures learnings and pillar rotation

🤖 Generated with Claude Code

ryaneggz and others added 30 commits February 12, 2026 14:00
Refactor setup script to remove 'clawdius' user references and adjust prompts for SSH keys and Git configuration. Update paths for Bun and uv installations to use the current user's home directory.
- Replace OpenClaw CLI (npm) with Claude Code CLI (curl installer)
- Rename ubuntu/ directory to sandbox/ for generic isolation env
- Remove MCP server files (index.js, package.json, entrypoint.sh, .example.env)
- Update all docs, links, and branch refs to Claude Code
- Simplify docker-compose (remove port mapping and env_file)
- Update CI workflow tag pattern to sandbox-*

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move Dockerfile, .dockerignore, .gitignore to repo root
- sandbox/ now only contains setup.sh (files copied into container)
- Add COPY sandbox/ /sandbox/ to Dockerfile
- Update build contexts to root in docker-compose, Makefile, CI workflow
- Remove sandbox/README.md (consolidated into root README)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create sandbox user with passwordless sudo in Dockerfile
- Install Bun, uv, Claude Code as sandbox user via su -
- System packages (Node.js, gh) remain root-level
- Git config, SSH keys, GH auth target sandbox user
- Fix PATH issues ($HOME instead of /home/$USER)
- Fix Claude Code install (pipe to bash, not sh)
- Replace clawdius references with sandbox

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Bind mount ./sandbox to /home/sandbox for persistence across restarts
- Copy sandbox files to /home/sandbox owned by sandbox user in Dockerfile
- Add make rebuild (no-cache build + restart)
- Rename SANDBOX_NAME default to claude

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…docs

- Move setup.sh to install/ (copied into image at build)
- Add workspace/ with CLAUDE.md (bind-mounted for persistence)
- Remove sandbox/ directory
- Install all tools system-wide as root (Bun, uv, Claude Code via npm)
- Bake --dangerously-skip-permissions alias into Dockerfile
- Mount only workspace/ to keep sandbox user home clean
- Update README with full setup docs, Makefile targets, architecture
- Update CLAUDE.md with agent-facing environment context

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI triggers on claude-v* tags (e.g. claude-v1.0.0)
- Images tagged as ghcr.io/ruska-ai/sandbox:claude-v1.0.0 + claude-latest
- Simplify Makefile IMAGE to ghcr.io/ruska-ai/sandbox:claude-$(TAG)
- Document release process in README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Install tmux, nano, Docker CLI + Compose by default
- Add opt-in prompts for Codex, Pi Agent, and AgentMail CLI
- AgentMail API key stored in .bashrc (silent input, not in history)
- Create AGENTS.md as canonical instructions, symlink CLAUDE.md to it
- Add .claude/ and .codex/ config dirs in workspace
- Dockerfile: add codex/pi aliases, docker group for sandbox user
- docker-compose: mount Docker socket, add host.docker.internal
- Makefile: NAME variable for multiple named sandboxes (make NAME=foo run)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI workflow triggers on oh-v* tags, pushes to ghcr.io/ruska-ai/open-harness
- Makefile NAME defaults to open-harness
- README fully updated with open-harness branding, multi-agent docs, named sandboxes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add entrypoint.sh that syncs the container's docker group GID to the
host socket's GID at startup, then drops to the sandbox user via gosu.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ryaneggz and others added 17 commits March 26, 2026 20:00
- DOCKER=false by default; pass DOCKER=true to mount socket + host networking
- Split compose into base and docker-compose.docker.yml override
- NAME is now required (no default) — errors clearly if missing
- shell/stop/clean print helpful messages when container not found

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds periodic heartbeat runner, agent persona (SOUL.md), and long-term
memory (MEMORY.md + daily logs) to give sandbox agents persistent
identity and recurring task execution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tion headers

- Add 'Why Open Harness?' section with 6 numbered core intentions
- Add Key Benefits table with emoji prefixes
- Add emoji to all section headers for visual clarity
- Add horizontal rules between major sections
- Add custom-banner-extension plan to .claude/plans
- Add 'make quickstart' target: builds image, starts container, provisions
  all tools non-interactively, prints next steps
- Move quickstart to top of README, before 'Why Open Harness?'
- Consolidate old Install/Docker Quick Start into 'More Ways to Run'
- Add quickstart to Makefile Targets table
Also moves .pi/ config into workspace/ and cleans up HEARTBEAT.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add the LinkedIn Ghostwriter agent skill with style guide, reference
posts, draft queue, and ~40 generated post drafts. Wire up the
heartbeat task in HEARTBEAT.md and include iteration memory for
continuous improvement across cycles.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant