agentsclimarketplace

Test

Skill ninnettesudanese653/claude-plugins/plugins/socials/commands/test

Manage and extend Claude Code with plugins for social, browser, and Hive workflows.

Install
npx -y skills add ninnettesudanese653/claude-plugins --skill test

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Comprehensive test suite for all Socials tools and functionality

SKILL.md

17.8 KB, as published. Nobody here has run it

Socials Test Suite

Run comprehensive tests on all Socials tools to verify the extension and MCP server are working correctly.

Mode Selection

IMPORTANT: Before running any tests, ask the user which mode they want:

Which test mode would you like to run?

1. **Dry Run** (safe) - Tests read-only tools only. Will NOT post, reply, or engage.
2. **Full Test** (destructive) - Tests ALL tools including posting and engagement.
   WARNING: This will create real posts, replies, likes, and connection requests!

Enter 1 or 2:

Wait for user response before proceeding. Default to Dry Run if unclear.


Test Execution

Run tests in this order, reporting results as you go:

1. Connection & Access Tests

Test: socials_check_access
Expected: connected=true, canUseMcp=true

If this fails, run the RECOVERY FLOW before stopping:

RECOVERY FLOW:
1. socials_refresh_auth → try to restore auth
2. If still fails: socials_restart_bridge → restart WS bridge
3. Ask user to refresh Socials extension in browser
4. Retry socials_check_access
5. If still fails after recovery, stop and report the issue
Test: socials_health_check
Expected: is_healthy=true, connected=true
Test: socials_diagnostics
Expected: status=ok, extension_connected=true

2. Browser Control Tests

Test: socials_get_active_tab
Expected: Returns current tab info (tabId, url, title)
Test: socials_get_agent_tab
Expected: Returns agent tab info or null if not set

If no agent tab is set:

Test: socials_open_tab (url: "https://x.com/home", focus: false)
Expected: success=true, agentTabPinned=true
Test: socials_get_agent_tab (verify it's now set)
Expected: Returns the tab we just opened
Test: socials_set_agent_tab (tabId: <current agent tab id>)
Expected: success=true (re-pins the same tab)
Test: socials_focus_agent_tab
Expected: success=true, agent tab receives focus
Test: socials_refresh_auth
Expected: Returns auth status (validates device auth flow)
Test: socials_reload_tab
Expected: success=true, agent tab reloaded

Optional (only if testing recovery):

Test: socials_restart_bridge
Expected: success=true, message includes "listening on 127.0.0.1:9847"
Note: After this, user must refresh browser extension before continuing

3. X (Twitter) Tests - Read Only

Ensure agent tab is on X (https://x.com/home):

Test: socials_get_feed (platform: "x", count: 5)
Expected: Returns array of posts with id, author, content
Test: socials_get_page_content
Expected: Returns posts from current page
Test: socials_scroll (direction: "down", amount: 400)
Expected: success=true
Test: socials_x_search (query: "test")
Expected: success=true, navigates to search results (default mode: top)
Test: socials_x_search (query: "startup", mode: "latest")
Expected: success=true, navigates to Latest tab (f=live)
Test: socials_x_search (query: "AI", from: "elonmusk", min_faves: 100)
Expected: query="AI from:elonmusk min_faves:100"
Note: Tests user filter + engagement threshold
Test: socials_x_search (query: "tech", filter: "media", is_retweet: false, lang: "en")
Expected: query="tech filter:media -is:retweet lang:en"
Note: Tests content filter + exclusion + language
Test: socials_x_search (query: "news", since: "2026-01-01", until: "2026-03-01")
Expected: query="news since:2026-01-01 until:2026-03-01"
Note: Tests date range (YYYY-MM-DD format)
Test: socials_x_search (query: "#buildinpublic", has: ["media", "links"], min_retweets: 5)
Expected: query="#buildinpublic has:media has:links min_retweets:5"
Note: Tests hashtag + has filters + engagement
Test: socials_x_search (query: "conference", near: "San Francisco", place_country: "US")
Expected: query="conference near:\"San Francisco\" place_country:US"
Note: Tests location filters
Test: socials_x_search (query: "thread", is_reply: false, mode: "latest")
Expected: query="thread -is:reply", mode=latest
Note: Tests reply exclusion for finding original posts

After search results load, test post context:

Test: socials_get_feed (platform: "x", count: 1)
Expected: Returns at least one post with an id
Test: socials_get_post_context (tweet_id: <id from previous feed>)
Expected: Returns context around the post (replies, parent thread)

Navigate to notifications for notification tests:

Test: socials_navigate (url: "https://x.com/notifications")
Expected: success=true

Wait 2 seconds, then:

Test: socials_x_notifications (count: 5)
Expected: Returns array of notifications with:
  - type: "like", "follow", "repost", "reply", "quote", "mention", or "unknown"
  - user: { name, handle, avatarUrl, isVerified }
  - timestamp: ISO datetime string
  - relatedContent: truncated text of the liked/mentioned tweet (if applicable)
  - tweetUrl: URL to the tweet (for tweets)
  - tweetId: Tweet ID for use with socials_engage_post / socials_quick_reply
Note: Must be on https://x.com/notifications page
Note: If fewer notifications than requested, will auto-scroll up to 3 times

Test notification engagement workflow (if tweet notification found with tweetId):

Test: socials_engage_post (tweet_id: <tweetId from notification>, like: true, bookmark: true)
Expected: success=true, likes and bookmarks the tweet directly from notifications page
Note: No navigation needed - engage_post works on current page
Test: socials_quick_reply (tweet_id: <tweetId from notification>, reply: "Thanks for the engagement! [timestamp]")
Expected: success=true, replies to the notification tweet directly
Note: Opens reply modal on the notification tweet and posts - no navigation needed

4. X (Twitter) Tests - Destructive [FULL MODE ONLY]

Skip this section in Dry Run mode.

Before running, confirm with user:

About to test X engagement tools. This will:
- Create a test post on your X account
- Like and bookmark a post
- Reply to a post

Continue? (yes/no)

If confirmed:

Test: socials_create_post (content: "Test post from Socials MCP - please ignore [timestamp]", platform: "x")
Expected: success=true, returns post URL
Action: Note the post URL to delete manually later
Test: socials_create_post (content: "Testing newlines:\n\nLine 1\nLine 2\nLine 3\n\n[timestamp]", platform: "x")
Expected: success=true, post should display with proper line breaks
Action: Note the post URL to delete manually later
Note: Tests newline (\n) support in X compose box
Test: socials_create_post with video (content: "Testing video upload [timestamp]", platform: "x", media: [video file])
Expected: success=true, waits for upload progress to reach 100% before posting
Action: Note the post URL to delete manually later
Note: Tests video upload progress detection (waits for "Processing X%" to complete)
Test: socials_engage_post (tweet_id: <id from feed>, like: true, bookmark: true)
Expected: success=true
Note: This will like and bookmark a real post
Test: socials_quick_reply (tweet_id: <id from feed>, reply: "Test reply from Socials MCP [timestamp]")
Expected: success=true, returns reply URL
Action: Note the reply URL to delete manually later

After tests, remind user:

Destructive X tests complete. Please manually delete:
- Test post: [URL]
- Test reply: [URL]
- Undo like/bookmark if desired

5. LinkedIn Tests - Read Only

Navigate to LinkedIn:

Test: socials_navigate (url: "https://www.linkedin.com/feed/")
Expected: success=true

Wait 2-3 seconds for page load, then:

Test: socials_get_feed (platform: "linkedin", count: 5)
Expected: Returns array of LinkedIn posts
Test: socials_linkedin_posts_search (query: "startup")
Expected: success=true
Test: socials_linkedin_people_search (query: "software engineer")
Expected: success=true
Test: socials_linkedin_get_people (count: 3)
Expected: Returns array of people results
Test: socials_linkedin_go_to_page (pageNumber: 2)
Expected: success=true, navigates to page 2 of results
Test: socials_linkedin_next_page
Expected: success=true, navigates to page 3 of results

Navigate to a profile for connection status and profile tests:

Test: socials_navigate (url: "https://www.linkedin.com/in/satyanadella/")
Expected: success=true

Wait 2 seconds, then:

Test: socials_linkedin_connection_status
Expected: Returns connection status with one of:
  - connected (detected via "More" menu button)
  - pending_sent (detected via "Pending, click to withdraw" button)
  - not_connected (detected via "Invite to connect" button)
  - follow_only, unknown
Also returns actions_available array
Test: socials_linkedin_profile
Expected: Returns profile details including:
  - Basic: name, headline, location, profileUrl
  - Connection: connectionDegree, followers, connections
  - Content: about, currentRole, experiences, education, skills
  - Contact Info: contactInfo object with emails[], phones[], websites[], birthday, twitter, address
Note: Tab will briefly focus to trigger LinkedIn's lazy-loaded content
Verify: Contact info extraction works (requires 1st degree connection for full data)

For contact info verification, navigate to a 1st degree connection:

Test: socials_linkedin_profile (on a 1st degree connection)
Expected: contactInfo should contain at least some fields if shared by connection
Note: Contact info visibility depends on the connection's privacy settings

6. LinkedIn Tests - Destructive [FULL MODE ONLY]

Skip this section in Dry Run mode.

Before running, confirm with user:

About to test LinkedIn engagement tools. This will:
- Like a LinkedIn post
- Send a connection request (optional)

Continue? (yes/no)
Also test connection request? (yes/no) - WARNING: Cannot be easily undone!

If confirmed:

Navigate to feed first:

Test: socials_navigate (url: "https://www.linkedin.com/feed/")
Test: socials_get_feed (platform: "linkedin", count: 1)
Expected: Returns at least one post with post_id
Test: socials_linkedin_engage (post_id: <id from feed>, like: true)
Expected: success=true
Note: This will like a real LinkedIn post

If user confirmed connection request test:

Test: socials_linkedin_people_search (query: "test account")
Expected: success=true
Test: socials_linkedin_get_people (count: 1)
Expected: Returns a person result
Test: socials_linkedin_connect (profile_url: <url from people result>, note: "Test connection from Socials MCP")
Expected: success=true
WARNING: This sends a real connection request!

After tests, remind user:

Destructive LinkedIn tests complete. You may want to:
- Unlike the post if desired
- Withdraw connection request if sent

7. Reddit Tests

Navigate to Reddit:

Test: socials_navigate (url: "https://www.reddit.com/")
Expected: success=true

Wait 2-3 seconds for page load, then:

Test: socials_get_feed (platform: "reddit", count: 5)
Expected: Returns array of Reddit posts with title, author, subreddit
Test: socials_get_page_content
Expected: Returns posts from current Reddit page
Test: socials_scroll (direction: "down", amount: 400)
Expected: success=true

Navigate to a specific subreddit:

Test: socials_navigate (url: "https://www.reddit.com/r/programming/")
Expected: success=true

Wait 2 seconds, then:

Test: socials_get_feed (platform: "reddit", count: 3)
Expected: Returns posts from r/programming

8. Persona Tests

Test: socials_list_personas
Expected: Returns array of personas with id and name

9. Feature Flag Tests

Test: socials_diagnostics (refresh: true)
Expected: Returns feature_gating status with flags

Reporting Results

After each test, report:

  • Tool name
  • Status: PASS / FAIL / SKIP
  • Brief result or error message

At the end, provide a summary:

=== Socials Test Results ===
Mode: [Dry Run / Full Test]

Connection Tests:        X/X passed
Browser Tests:           X/X passed
X Read Tests:            X/X passed
X Destructive Tests:     X/X passed (or SKIPPED in dry run)
LinkedIn Read Tests:     X/X passed
LinkedIn Destructive:    X/X passed (or SKIPPED in dry run)
Reddit Tests:            X/X passed
Persona Tests:           X/X passed
Feature Flag Tests:      X/X passed

Total: XX/XX tests passed

[Any issues or recommendations]
[If Full Mode: List of posts/actions to clean up manually]

Test Guidelines

  1. Always ask mode first: Never run destructive tests without explicit confirmation

  2. Handle failures gracefully: If a test fails, log it and continue with other tests

  3. Wait for page loads: After navigation, wait 2-3 seconds before testing feed/content tools

  4. Clean up reminders: In Full Mode, always remind user what to clean up at the end

  5. Report issues clearly: If something fails, explain what the user might need to fix

  6. Timestamps: Add timestamps to test posts/replies so they're identifiable

  7. Newline testing: When testing posts with \n characters, verify the output has actual line breaks

  8. Video uploads: Large video uploads may take 1-2 minutes; the extension waits for 100% progress

  9. Modal targeting: Posts/replies correctly target the modal compose box (not timeline composer)

  10. X Advanced Search: Test all modes (top/latest/people/photos/videos) and operators:

    • User: from, to, retweets_of
    • Time: since/until (YYYY-MM-DD), since_time/until_time (Unix)
    • Engagement: min_faves, min_retweets, min_replies
    • Content: filter (media/images/video/links), has[], is_reply, is_retweet
    • Location: lang, near, place, place_country
    • Advanced: list, conversation_id

Optional Parameters

The user may specify:

  • --dry-run or --safe to skip mode selection and run non-destructive only
  • --full to skip mode selection and run all tests (still confirms before destructive)
  • --platform x, --platform linkedin, or --platform reddit to test only one platform
  • --skip-browser to skip browser control tests (if tab is already set up)
  • --verbose for detailed output of each tool response

Example Output - Dry Run

Running Socials Test Suite...

Mode Selection: Which test mode? (1=Dry Run, 2=Full Test)
> 1

Running in DRY RUN mode (safe, non-destructive)

[1/9] Connection Tests
  socials_check_access: PASS (connected, Pro tier)
  socials_health_check: PASS (healthy, 12ms latency)
  socials_diagnostics: PASS (v1.0.39)

[2/9] Browser Control Tests
  socials_get_active_tab: PASS (tab 123, x.com)
  socials_get_agent_tab: PASS (tab 123 pinned)
  socials_set_agent_tab: PASS (tab re-pinned)
  socials_focus_agent_tab: PASS (focused)
  socials_refresh_auth: PASS (auth valid)
  socials_reload_tab: PASS (reloaded)

[3/9] X (Twitter) Read Tests
  socials_get_feed: PASS (5 posts retrieved)
  socials_get_page_content: PASS (5 posts)
  socials_scroll: PASS
  socials_x_search (basic): PASS (mode: top)
  socials_x_search (mode: latest): PASS (f=live)
  socials_x_search (from + min_faves): PASS (user + engagement)
  socials_x_search (filter + is_retweet + lang): PASS (content filters)
  socials_x_search (since/until): PASS (date range)
  socials_x_search (hashtag + has + min_retweets): PASS (has filters)
  socials_x_search (near + place_country): PASS (location)
  socials_x_search (is_reply: false): PASS (exclusion)
  socials_get_post_context: PASS (context retrieved)
  socials_navigate (notifications): PASS (x.com/notifications)
  socials_x_notifications: PASS (5 notifications: 3 likes, 1 follow, 1 mention)

[4/9] X (Twitter) Destructive Tests
  SKIPPED (Dry Run mode)

[5/9] LinkedIn Read Tests
  socials_navigate: PASS (linkedin.com/feed)
  socials_get_feed: PASS (5 posts retrieved)
  socials_linkedin_posts_search: PASS
  socials_linkedin_people_search: PASS
  socials_linkedin_get_people: PASS (3 results)
  socials_linkedin_go_to_page: PASS (page 2)
  socials_linkedin_next_page: PASS (page 3)
  socials_linkedin_connection_status: PASS (not_connected)
  socials_linkedin_profile: PASS (profile details)

[6/9] LinkedIn Destructive Tests
  SKIPPED (Dry Run mode)

[7/9] Reddit Tests
  socials_navigate: PASS (reddit.com)
  socials_get_feed: PASS (5 posts retrieved)
  socials_get_page_content: PASS (posts on page)
  socials_scroll: PASS
  socials_navigate (subreddit): PASS (r/programming)
  socials_get_feed (subreddit): PASS (3 posts)

[8/9] Persona Tests
  socials_list_personas: PASS (4 personas)

[9/9] Feature Flag Tests
  socials_diagnostics (refresh): PASS (flags loaded)

=== Socials Test Results ===
Mode: Dry Run (non-destructive)

All 33 read-only tests passed!
6 destructive tests skipped.

Your Socials setup is working correctly.

Example Output - Full Test

Running Socials Test Suite...

Mode Selection: Which test mode? (1=Dry Run, 2=Full Test)
> 2

WARNING: Full Test mode will create real posts and engagement!
Running in FULL TEST mode

[1/9] Connection Tests
  socials_check_access: PASS (connected, Pro tier)
  ...

[3/9] X (Twitter) Read Tests
  ...all pass...

[4/9] X (Twitter) Destructive Tests
  Confirm: About to create posts and engage. Continue? (yes/no)
  > yes
  socials_create_post: PASS (posted: x.com/user/status/123456)
  socials_engage_post: PASS (liked + bookmarked)
  socials_quick_reply: PASS (replied: x.com/user/status/123457)

[5/9] LinkedIn Read Tests
  ...all pass...

[6/9] LinkedIn Destructive Tests
  Confirm: About to like posts and optionally connect. Continue? (yes/no)
  > yes
  Test connection request too? (yes/no)
  > no
  socials_linkedin_engage: PASS (liked post)
  socials_linkedin_connect: SKIPPED (user declined)

...

=== Socials Test Results ===
Mode: Full Test (destructive)

All 36 tests passed! (1 skipped by user choice)

CLEANUP REQUIRED:
- Delete test post: x.com/user/status/123456
- Delete test reply: x.com/user/status/123457
- Undo like/bookmark on X if desired
- Undo LinkedIn like if desired

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.