feat: LinkedIn Ghostwriter agent skill and drafts#8
Draft
feat: LinkedIn Ghostwriter agent skill and drafts#8
Conversation
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>
- 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
workspace/.claude/skills/linkedin-ghostwriter/) with style guide, reference posts, draft queue, and extraction scriptworkspace/memory/linkedin-ghostwriter-iterations.md) for continuous improvement across cyclesFiles changed
workspace/HEARTBEAT.md— LinkedIn Ghostwriter heartbeat task definitionworkspace/.claude/skills/linkedin-ghostwriter/— full skill: SKILL.md, style guide, references, drafts, queueworkspace/.claude/skills/post-bridge/— Post Bridge API skillworkspace/memory/— daily log and ghostwriter iteration memoryTest plan
workspace/.claude/skills/linkedin-ghostwriter/assets/drafts/🤖 Generated with Claude Code