Install
$ agentstack add skill-lincwang123-bot-x-ops-assistant-x-ops-assistant ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
X Ops Assistant
Agent-agnostic skill pack for any public X/Twitter account:
diagnose visibility → audit history → analyze persona → plan content & recovery + post autopsy · weekly scorecard · peer benchmark + owner-first / suppressed-ops when public search is empty + first-use: bare @handle → full detailed report (no menu) + voice-mirror: learn tone/layout from recent posts; drafts match the account
Not a growth-hack spam kit. Not bound to a single creator handle or a single agent product.
First-use rule (HARD — do not skip)
When the user message is primarily just a handle (with or without @), treat it as first-use / cold start and immediately run a full detailed report. Do not ask “你想做什么 / which module?” first.
What counts as “just a handle”
| Message (examples) | Action | |--------------------|--------| | @someone | → first-report (full detailed) | | someone (clearly an X handle, no other task) | → first-report | | @someone 帮我看看 / 看看这个号 / 分析一下 (no narrower task) | → first-report | | @someone + only emoji/noise | → first-report |
What does not count (use normal router)
| Message | Task | |---------|------| | status URL / “改这条帖” | post-autopsy | | “是不是 shadowban / 限流” only | ban-check (still thorough) | | “周复盘 / scorecard” | scorecard | | “对标 @a @b” | peer-benchmark | | “只要 3 条成稿” | content-plan | | Explicit full-ops / “全面报告” | full-ops (same depth as first-report) |
First-report behavior
- Zero intake questions if
@handleis present. Default window 14d. - Run Phase F expanded (below) without waiting.
- Output one long-form, structured report in the user’s language.
- End with: “下次可直接说:限流复查 / 改帖+链接 / 周复盘 / 对标 @a @b / 只要成稿” — short menu after the report, not before.
- If profile is dead/suspended, report that and stop cleanly.
- If search empty + profile live → suppressed-ops; still complete the full report from profile samples.
- Drafts must be paste-ready (at least 3). Do not auto-publish.
- Voice-mirror (HARD): before any 成稿, read recent posts and write in that account’s tone, line breaks, emoji, punctuation, and habits — see
references/voice-mirror.md. Do not paste generic AI-marketing voice.
Done when: every section of the first-report template is filled or marked n/a with reason.
Audience & language
- Skill instructions: English (stable across agent hosts worldwide).
- User-facing replies: match the user's language (e.g. Simplified Chinese if they write Chinese).
- Keep handles, URLs, API fields, and commands in original form.
- Host-neutral tools: map the tool table below onto whatever the current agent provides (browser, web fetch, search, computer-use, optional API CLI). Do not refuse a task only because a host-specific tool name is missing—use the nearest equivalent.
Data sources (read this paradox once)
Paradox: Ghost/search-suppressed accounts often do not appear in public from:HANDLE search — yet those are the accounts that need ops help.
| Use search for | Do not use search as | |----------------|----------------------| | Evidence of suppression (empty index) | The only library of posts for audits/drafts |
Source priority: profile URLs → status deep links → owner logged-in browser → public search (ban evidence) → checkers → minimal user-pasted links → optional owner xurl if already configured. xurl / X API is opt-in only — never block a task because it is missing. See references/optional-xurl.md. Never ask the user to “search yourself and upload what you find” as the primary path when profile still works.
Full rules: references/data-sources.md (load on ban-check, audit, scorecard, content-plan when search is thin).
Suppressed-ops mode (hard rules)
Enter when from:HANDLE is empty/thin and profile or status URLs still work (or user reports shadow/ghost ban):
- Record empty search as a visibility signal, not “no content.”
- Pull samples from profile / with_replies / media, owner session, or optional
xurltimeline if configured. - If still stuck, ask only for 1–3 status URLs (or a screenshot) — smallest input.
- Tag every sample with
source: profile | status-url | owner-session | xurl? | user-paste | search. - Continue persona, autopsy, calendar, recovery as normal on those samples.
- If user wants API later, load
references/optional-xurl.md— do not force setup mid-diagnosis.
Module router (load only what you need)
Match the user request → set task id → load the linked file before deep work.
| User intent (examples) | Task id | Load | |------------------------|---------|------| | Bare @handle / first use / 看看这个号 | first-report | Phase F expanded (full detailed; no questions first) | | shadowban / ghost ban / 限流 / search missing | ban-check | Phase A + references/shadowban-signals.md | | account health / history / 体检 | audit | Phase B | | persona / voice / 人设 / pillars | persona | Phase C (+ local profile if any) | | weekly posts / calendar / 成稿 | content-plan | Phase D | | full report / 全面报告 / full-ops | full-ops | same depth as first-report | | this post flopped / rewrite / status URL | post-autopsy | references/modules/post-autopsy.md | | weekly review / 复盘 / scorecard | scorecard | references/modules/scorecard.md | | 对标 / competitors / peers / learn from @a @b | peer-benchmark | references/modules/peer-benchmark.md | | Analytics / notifications logged-in | logged-in | Phase E |
Composition rules:
first-report/ bare@handle: always full detailed report; never a one-line “what do you want?” reply.full-ops≡ same deliverable asfirst-report(may add light scorecard snapshot).peer-benchmark→ feed “one structure” intocontent-planor nextscorecardexperiment.post-autopsydoes not replaceban-check; if reach is account-wide broken, say so and offer Phase A.- Always resolve
@handlefirst (message →local/account-profile.md→ one question only if truly missing). No global default handle.
skill_view(name='x-ops-assistant', file_path='references/modules/post-autopsy.md')
skill_view(name='x-ops-assistant', file_path='references/modules/scorecard.md')
skill_view(name='x-ops-assistant', file_path='references/modules/peer-benchmark.md')
Linked references (load on demand)
| File | When to load | |------|----------------| | references/voice-mirror.md | any drafts / persona / first-report / post-autopsy rewrites | | references/data-sources.md | search empty, ghost/search ban, “where does data come from”, suppressed-ops | | references/optional-xurl.md | user wants X API / xurl as an optional path; setup pointer | | references/shadowban-signals.md | ban-check / visibility disputes | | references/report-templates.md | core report output shapes | | references/account-profile.template.md | durable local persona config | | references/persona-example.md | teaching example only (fictional) | | references/modules/post-autopsy.md | single-post diagnosis + 3 rewrites | | references/modules/scorecard.md | weekly health scorecard | | references/modules/peer-benchmark.md | 2–4 peer structure comparison | | references/oss-release.md | open-source package, dual-tree, leak scan | | references/community-skill-patterns.md | authoring notes for multi-operator community skills |
Overview
| Module | Purpose | |--------|---------| | A. Visibility | Hard lock vs search ban vs ghost/thread ban vs reply deboost vs behavioral demotion | | B. Audit | Profile, posting mix, engagement shape, risk flags | | C. Persona | Identity / promise / voice / pillars / proof | | D. Ops | Cadence, quality gates, weekly pack, recovery calendar | | E. Logged-in path | Analytics / notifications via user's own browser session | | M1. Post autopsy | One status → scores, layer hypothesis, 3 rewrites | | M2. Scorecard | Weekly mix + visibility + health score + one experiment | | M3. Peer benchmark | Target vs 2–4 peers → steal structures, not copy |
Tool priority (stable → heavy)
| # | Tool | Use for | |---|------|---------| | 1 | Profile + status URLs via browser_* | Liveness + post samples even when search is empty | | 2 | x_search | Ban evidence; healthy-account sampling (from:HANDLE) | | 3 | Owner logged-in browser (Codex cookie import / user Chrome / computer-use) | Self timeline, notifications, Analytics UI in suppressed-ops | | 4 | Third-party checkers | Supporting visibility flags only | | 5 | User-pasted 1–3 status URLs / screenshots | Fallback only | | 6 (optional) | xurl only if user opted in and OAuth works | Structured owner timeline / confirmed publish — see references/optional-xurl.md |
Default path needs no X API. Treat xurl as a user-facing option, not a prerequisite.
> Platform note: Distribution is multi-layer (search index, reply ranking, For You, following timeline, trust). “Ghost ban” is usually a bundle of suppressions, not one official switch. Third-party checkers are supporting only — always cross-check. Empty search ≠ empty account.
When to Use
- User sends only
@handle/ “看看这个号” → alwaysfirst-report(full detailed; no capability menu first) - shadowban / ghost ban / limited reach / not searchable / replies invisible to others
- account health check, persona rebuild, positioning
- warm-up copy, weekly calendar, recovery plan, content pillars
- separate policy lock vs silent demotion vs weak content
- single-post autopsy, rewrites, “why did this flop”
- weekly scorecard / retrospective
- peer / competitor structure benchmark
- user has a logged-in browser session and wants ops readouts
Don't use for:
- pure automated post/like/delete plumbing (user posts manually by default; optional
xurlonly if opted in) - bypassing platform security, credential stuffing, device farms
- mass follow/unfollow, engagement pods, bought reach
- promising “guaranteed unban” or fabricating evidence
- verbatim cloning of peer posts
- answering bare
@handlewith only a feature menu or multi-question intake - writing drafts in generic AI/marketing voice instead of mirroring the account
Local personalization (optional, per installer)
This skill ships with zero personal defaults.
If a user wants sticky preferences, they create a local-only file (gitignored if they fork):
x-ops-assistant/local/account-profile.md
# or: /local/account-profile.md
Copy from references/account-profile.template.md. On load:
- If
local/account-profile.mdexists → use it for intake defaults. - Else → ask for
@handle(or use the handle named in the user message). Never invent a community-wide default account.
Do not commit real cookies, tokens, or private analytics into the skill tree.
Community vs private install
When the user wants this skill 开源 / for the whole community (not only their account):
- Strip personal handles, products, and draft-path defaults from shipped
SKILL.md/references/. - Keep operator-specific data only under
local/(never in the public export). - Produce a clean export tree and run a leak scan — see
references/oss-release.md. - Prefer module router +
references/modules/*so agents load only the needed slice. - If agent
git commit/ghis blocked by consent, still deliver the clean directory; user publishes.
Phase 0 — Intake (≤30s)
Resolve without over-asking:
- Target
@handle— required (from message, local profile, or one question if missing) - Task type:
- Message is only / mainly
@handle→first-report(do not ask) - Else:
ban-check|audit|persona|content-plan|full-ops|post-autopsy|scorecard|peer-benchmark
- Window:
7d|14d|30d(default 14d) - Logged-in needed? public diagnosis → no; Analytics/notifications → yes
- Output language — same as user
Done when: handle + task type are known. For bare @handle, task type is always first-report.
Phase A — Visibility / ghost-ban diagnosis (multi-signal)
A0. Vocabulary (use consistently)
| Label | User symptom | Common drivers | |-------|--------------|----------------| | Suspended / Locked | Login wall / restriction interstitial | Policy, reports, security lock | | Search ban | Posts/handle missing from search | Spam patterns, short-link floods, sensitive flags, new-account heat | | Search suggestion ban | Typeahead omits @handle | Cold start / low query volume (high false positive on checkers) | | Ghost / thread ban | Replies look fine to self, missing for others in-thread | Reply spam, follow churn, automation, spam labels | | Reply deboost | Replies pushed under “Show more replies” | Low trust, low-quality replies, reply farming | | Behavioral demotion | Reach collapsed; checkers often green | Extreme volume, reciprocal-follow rings, pure promo, automation feel |
Hard rules:
- First prove the account is not suspended/locked (profile URL, not search).
- Prove content exists via status URLs and/or profile posts —
from:HANDLEalone is insufficient and often false-negative under search ban. - Always inspect Posts and Replies (reply-heavy accounts look empty on Posts only).
- Checkers are supporting — all-clear ≠ healthy distribution.
- Separate hard policy from behavioral demotion.
- Recovery: 48–72h cool-down, revoke shady third-party apps, slow spam cleanup, then 1–3 quality originals/day. Appeal only for lock/suspend — not pure silent demotion.
- If search is empty but profile/status live → enter suppressed-ops (
references/data-sources.md); do not demand search-based uploads.
A1. Evidence checklist (run in order)
Target @HANDLE (strip @ → HANDLE):
1) Public liveness (first — before search)
https://x.com/HANDLE
https://x.com/HANDLE/with_replies
Record: 404 / suspended / protected / ok; bio; join date; follower visibility. If profile lists recent posts, capture 2–5 status URLs from the profile even if search later fails.
2) Content existence (do not rely on search alone)
Preferred order:
- Status URLs from profile DOM / pin / media
- Owner logged-in browser; optional
xurltimeline only if already configured - Then:
x_search → from:HANDLE
- Hits → healthy search path; use samples freely
- Empty + profile/status alive → search suppression signal; keep profile samples; enter suppressed-ops
- Empty + profile dead → suspend/rename/protect/wrong handle
Open 2–3 status URLs logged-out. Record visible / login-wall / missing.
3) Search visibility (cross view) — evidence of ban, not the post library
- Logged-out advanced search / exact phrase from a known post
- If available: warmed account view vs brand-new / logged-out view
- Searching as yourself for yourself → many false negatives
- Document “search empty” explicitly in the evidence table
4) Third-party checkers (supporting only)
Open in browser (never submit passwords into random tools if avoidable):
https://shadowban.yuzurisa.com/https://hisubway.online/shadowban/(often/HANDLE)https://opentweet.io/tools/shadowban-check
Capture each flag. Do not close the case on checker alone.
5) Behavioral surface (last 7d)
Estimate from profile/owner samples (not from empty search):
- original / repost / reply ratio
- reciprocal-follow language, mass @, short-link spam
- new account + high heat
- automation fingerprints (fixed templates, instant bursts)
6) Suppressed-ops handoff
If mode triggered: load references/data-sources.md, state it in the
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lincwang123-bot
- Source: lincwang123-bot/x-ops-assistant
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.