Skip to content
Agentmart
Submit a tool

x-compose-post

Compose and send posts on X (Twitter) through ai-chrome-pilot.

Skill by shinshin86

IndexedMIT★ 7
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/shinshin86-x-compose-post

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Compose and send posts on X (Twitter) through ai-chrome-pilot. Use when the user wants to create a normal post, reply, quote post, or scheduled post, optionally with images, while choosing the correct mode from explicit inputs and verifying the result after submission.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/x-compose-post

What's inside

Skill name
x-compose-post
Description
Compose and send posts on X (Twitter) through ai-chrome-pilot. Use when the user wants to create a normal post, reply, quote post, or scheduled post, optionally with images, while choosing the correct mode from explicit inputs and verifying the result after submission.
License
MIT
Instructions
248 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (2)

  • SKILL.md
  • openai.yaml · agents/

SKILL.md (first lines)

# X Compose Post

Use ai-chrome-pilot to create X posts from one unified workflow, then branch into `post`, `reply`, `quote`, or `schedule` mode.

Prefer this skill for broad post-creation tasks. Use `x-schedule-post` when a schedule-only flow is explicitly needed, and use `x-quote-post` when the user already knows the exact post they want to quote.

Keep the skill profile-agnostic. Use `default` unless the user explicitly requested another profile.

## Prerequisites

- ai-chrome-pilot server is available in the current repo
- Google Chrome is installed
- The user is already logged in to X in the chosen Chrome profile
- Prefer `HEADLESS=0` for real submission flows so the visible composer state can be inspected
- The UI is expected to be Japanese; match labels such as `ポストする`, `返信`, `引用する`, `ポストを予約`, `確認する`, and `予約設定`

If X shows a login screen, stop and use `x-login` first.

## Inputs To Resolve

Resolve these before acting:

- `profile_name`: default to `default` if unspecified
- `mode`: one of `post`, `reply`, `quote`, `schedule`
- `post_text`: required in all modes
- `target`: required for `reply` and `quote`
  - accept URL, actor/date/text tuple, or another explicit locator
- `schedule`: required for `schedule`
  - year, month, day, hour, minute
- `image`: optional attachment path when the user provided one

Default resolution rules:

- If `profile_name` is unspecified, use `default` without asking
- If the request is a normal post and includes `post_text`, execute directly
- If the request is a scheduled post and includes `post_text` plus the full schedule, execute directly
- If the request is `reply` or `quote`, ask only when the target post is not specific enough to identify safely

If the target post is not specific enough for `reply` or `quote`, stop and ask for clarification or first use a read-only skill to identify the exact target.

## Mode Selection

- `post`
  - Create a normal post from X home or the post composer
- `reply`
  - Open the target post and use the inline reply composer or reply modal
- `quote`
  - Open the target post, open the repost menu, and choose `引用する`
- `schedule`
  - Start from a normal post composer, then open the schedule dialog and finalize via `予約設定`

## Common Workflow

### 1. Ensure the server is running

Check health:

```bash
curl -s http://127.0.0.1:3333/health
```

If not running, start it with the requested profile:

```bash
HEADLESS=0 PROFILE_NAME=<profile_name> npx tsx src/index.ts
```

### 2. Open the right page

- `post` or `schedule`
  - navigate to `https://x.com`
- `reply` or `quote`
  - navigate directly to the target post URL when available
  - otherwise find the target post first and only continue when the target is unambiguous

After navigation:

```bash
sleep 2
curl -s http://127.0.0.1:3333/screenshot -o /tmp/x_compose_check.png
```

### 3. Always take a fresh snapshot before acting

Use:

```bash
curl -s http://127.0.0.1:3333/snapshot
```

Refs change after navigation, dialog open/close, scrolling, and submission. Never reuse stale refs.

### 4. Enter the post text safely

Find the active `textbox "ポスト本文"` and focus it, but do not assume that `/act type` alone is enough for X.

Observed failure mode:

- `/act type` can make the submit button look enabled while the actual X composer state is still out of sync
- the visible page may appear filled, but `[data-testid="tweetTextarea_0"]` can still be empty or mismatched

Use this approach for real submission flows:

1. Use `/snapshot` and `/act click` to focus the correct composer
2. Prefer `Playwright over CDP` to connect to the already-open Chrome instance on `http://127.0.0.1:9222`
3. Enter text with `page.keyboard.type()` instead of relying on `/act type`
4. Verify the DOM text exactly matches the intended post before clicking any submit button

Minimal pattern:

```bash
curl -s -X POST http://127.0.0.1:3333/act \
  -H 'Content-Type: application/json' \
  -d '{"ref":"<textbox_ref>","action":"click"}'
```

```bash
node -e "const { chromium } = require('playwright-core'); (async () => {
  const expected = '<post_text>';

From shinshin86/ai-chrome-pilot, MIT.

Signals

Stars
7
Forks
1
Open issues
0
Last commit (this folder)
Mar 28, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from shinshin86

Cite this page

x-compose-post skill. Agent Mart. https://agentmart.dev/skills/shinshin86-x-compose-post (last updated 2026-10-24)