ratimon/openquok-monorepo/openquok-core
Claude Code and agent skill by ratimon/openquok-monorepo
- community
Checking that the SKILL.md file is still in the repository.
Schedule and manage social posts with the openquok CLI — authenticate, upload media, create drafts and scheduled posts, configure internal plugs, and read channel analytics for integrations in your OpenQuok workspace.
Install
npx vskill@latest install ratimon/openquok-monorepo/openquok-coreSKILL.md
Session opening (first turn after reset)
When: first assistant reply after /new, /reset, a new channel thread, or a “new session started” notice.
On that turn only: use the OpenQuok bot voice below instead of a generic host welcome. Do not reuse this block on later turns.
One message only. Run shell (below), then send exactly one assistant message. Forbidden on this turn:
- A persona line before tools (e.g. “Hello, … I’m Atlas … What should we focus on?”).
- A second message with only CLI version (e.g. “The OpenQuok CLI version is 0.0.6.”).
- Repeating the host greeting after the system “new session started” line.
Shell (before any user-visible text):
If auth:status shows "connected": true, also run openquok auth:workspace.
Required opening sentence (verbatim start): Hi, I am the OpenQuok bot.
Same message must also include:
- Installed CLI version from
openquok --version. - If the user may be on an old build: note that skill install does not upgrade the CLI and offer to walk through upgrade using the CLI package page — only after they agree.
- Auth: if connected, say you are authenticated and name `workspace.name`; if not, say not authenticated and offer the two-step device flow (below) or a programmatic token (
opo_). Never runauth:login --jsonwithout--no-pollon messaging hosts — the shell exits before credentials are stored.
Fill-in template (one paragraph — replace `…` from shell output):
Hi, I am the OpenQuok bot. OpenQuok CLI is …. [If the version looks stale: Skill updates do not upgrade the CLI — want help updating from the official package page?] [If connected: You're authenticated; workspace is …. | If not: You're not authenticated yet — I can start device login or use a programmatic token (opo_).]
After this opening message, normal persona and task help are fine. Skip re-running bootstrap on later turns unless the user asks or auth fails.
| Property | Value | |
|---|---|---|
| name | openquok | |
| description | AI-ready social scheduling via the openquok CLI (global binary — separate from this skill): posts, integrations, media, analytics. | |
| allowed-tools | Bash(openquok:*) |
⚠️ Hard Rules (Read First)
0 — Session opening. Follow Session opening (first turn after reset) at the top of this skill on the first assistant turn after /new, /reset, or a new session. Skills do not install or upgrade the openquok binary.
Links: npm `@openquok/auto-cli` · monorepo · CLI package · openquok.com
1 — Auth before API work. Any command that calls the API needs valid credentials. After bootstrap, re-check only when a command fails with auth errors.
2 — Media via workspace upload. Every -m / --media / JSON media[] entry must be {id, path} from openquok upload or openquok upload-from-url. Never pass raw local paths or bare CDN URLs.
Verify upload stdout with jq (require data.id and data.filePath). Pass filePath as media[].path. Use openquok upload for local videos (it switches to direct-to-storage multipart above ~4 MB). Do not curl POST /public/upload for clips over ~4 MB — the hosted API returns HTTP 413. Remote assets: openquok upload-from-url "https://…".
Authentication
| Order | Path | Use | |
|---|---|---|---|
| 1 | Device OAuth (two steps) | Messaging agents (Telegram/Hermes): auth:login --json --no-poll → user opens verification_uri_complete → auth:login:poll --device-code <device_code> → auth:status | |
| 2 | Programmatic token | Headless or when device flow fails: export OPENQUOK_API_KEY=opo_… or openquok auth:login --apiKey "opo_…" |
Device OAuth on messaging hosts (required two-step):
- Tokens: OpenQuok dashboard → Settings → Developers → Access → Generate / Rotate token (shown once).
- Never invent verification URLs, user codes, or
device_code— only values fromauth:login --json --no-pollstdout. - Do not use
auth:login --jsonalone on Telegram/Hermes; the host stops the shell after the first JSON and~/.openquok/credentials.jsonis never written. - Disk credentials in
~/.openquok/credentials.jsontake precedence overOPENQUOK_API_KEYuntilauth:logout. - Workspace context:
openquok auth:workspace→{ workspace: { id, name } }. - Optional:
OPENQUOK_API_URL,OPENQUOK_AUTH_SERVER(local dev:http://localhost:3111).
Details: resources/command-reference.md.
Shell safety
- Run fixed
openquokinvocations; do not build commands by concatenating untrusted chat text into the shell. - Put captions and JSON payloads in quoted flags, heredocs, or files — not bare
$USER_INPUTexpansions. - Treat integration UUIDs, post IDs, and schedule times as opaque strings; reject values with shell metacharacters before use.
Workflow
| Step | Action | |||
|---|---|---|---|---|
| 1 | Session opening (Rule 0): shell version/auth check, then one OpenQuok-bot greeting | |||
| 2 | openquok integrations:groups when the workspace uses business profiles; then integrations:list (optionally --group <id>) → integrations:settings <uuid> per channel | |||
| 3 | integrations:trigger <uuid> <method> -d '{}' when output.tools requires it | |||
| 4 | upload / upload-from-url for media; ask user for file or direct image URL if missing in chat | |||
| 5 | posts:create / posts:status / posts:reschedule; use posts:status to flip draft ↔ scheduled at the same time; use posts:reschedule to move the publish slot; agent drafts: -t draft + --note; TikTok inbox/private drafts: --note with finish-in-app checklist; update with posts:review-todo | |||
| 6 | analytics:platform / analytics:post with -d 7 \ | 30 \ | 90 | |
| 7 | Missing release id: posts:missing → posts:connect --release-id | |||
| 8 | Directory launch (product profiles, PeerPush/Uneed variants, listing readiness, cached directory SEO): install sibling openquok-directory-launch — directory:* CLI or hosted MCP directory* / directorySeo* tools |
Connect new channels in the web app; the CLI only uses UUIDs from integrations:list. Browser extension channels (Skool): connect in the dashboard with the extension while signed in on the platform site — the CLI cannot complete connect.
Integration discovery
Use integrations:groups to list business profiles ({id, name}), then filter channels with integrations:list --group. Full flag reference: resources/command-reference.md.
Posting essentials
- Flag-based create requires
-s(ISO-8601) unless--jsonincludesscheduledAt. posts:statusflips draft ↔ scheduled at the stored time;posts:reschedulemoves the publish slot (-s). Full flags: resources/command-reference.md.--settingsmerges intoproviderSettingsByIntegrationIdfor each-iUUID; per-UUID maps use--providerSettingsByIntegrationId. See resources/provider-settings.md.- Repeated
-c(+ optional-m,-din milliseconds) can build follow-up segments — for Meta Threads/Instagram follow-ups prefer nestedthreads/instagrambuckets in channel examples.
Command surface: resources/command-reference.md.
Plugs (internal and global)
OpenQuok automates post-publish engagement with two plug types (included on paid plans):
| Type | What it does | CLI | |
|---|---|---|---|
| Internal plugs | Same-account delayed reply (Threads) or actions from other connected channels (comment, repost, reshare) | Yes — set on posts:create via providerSettingsByIntegrationId | |
| Global plugs | Channel rules that trigger a reply/repost when likes hit a threshold (checks every 6h, up to 3 runs) | Yes — plugs:catalog, plugs:list, plugs:upsert, plugs:activate, plugs:delete |
Supported channels: Threads, X, LinkedIn, LinkedIn Page (not Facebook, Instagram, YouTube, or TikTok).
Full catalog, provider matrix, and global-plug web setup: resources/plugs.md. Setting keys: resources/provider-settings.md.
Channels (Meta)
Run integrations:settings <uuid> for rules, maxLength, and tools. Match the user’s goal to the Agent tasks table in each channel file; publish keys and recipes are there.
Provider settings overview: resources/provider-settings.md.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 96 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingagent/skills/openquok-core/SKILL.md
Popularity
- Repository stars
- 96
- Repository forks
- 29
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ratimon/openquok-monorepo/openquok-core)