agentleFS
matthewdonsemail-labmatthewdonsemail-lab/log/.claude/skills/log-linkedin-posts/SKILL.md

log-linkedin-posts

Skill63 starsChanged yesterdayMITView on GitHub

Posting on LinkedIn, liking or reposting, and taking a post down. A log play (docs/useCases/linkedin/posts.md): Post text, an image or mentions from the account's own session, like or repost someone's post, or delete one of the account's own posts, each the way LinkedIn's own web client does it, with no browser.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    The composer's follow-ups run after the post: When LinkedIn refuses one, the post is still live, the rest are skipped and nothing is …

    line 41

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Posting on LinkedIn, liking or reposting, and taking a post down

This is the log play linkedin/posts. Before anything else, call the log MCP tool getGuide({ useCase: "linkedin/posts" }): it returns this page and makes it the session's play, so every log tool's answer says which step you are on and a send with no play loaded is refused (rules 157, 158). Then follow the steps in order.

Draft every message from that person's own thread and matt's real replies (voice with no text, search), never from memory, and never send two that read alike (sameAsSent).

Post text, an image or mentions from the account's own session, like or repost someone's post, or delete one of the account's own posts, each the way LinkedIn's own web client does it, with no browser.

How the owner asks for it: "post this on linkedin", "put this up on linkedin with the picture", "like <someone>'s post on linkedin", "repost that on linkedin", "delete that linkedin post"

Run it from a fresh context

Say: "go on docs/useCases/linkedin/posts.md with <the text or the post>". The agent reads this page and runs the steps.

The steps

#StepToolDone when
0The account is known and signed inlocalAccountList {}, then linkedinSessionCheck { account }; if it isn't, the owner runs log linkedin cookies save --account <publicId> in a terminalloggedIn as that profile
1Dry run the post: the text as LinkedIn will show it, its mentions and the imagelinkedinPost { account, text, image }the preview, with each @[Name] matched to one person
2Show the owner the preview and wait for a yesthe reply to the ownerthe owner says post it
3Post itlinkedinPostLive { account, text, image, approvedBy: "<owner>", confirmLive: true }LinkedIn answers with the activity id and the post's URL
4Like a post, when askedlinkedinLike { account, post }, then linkedinLikeLive { account, post, approvedBy: "<owner>", confirmLive: true }LinkedIn's answer sets the post's reaction
5Repost a post as it is, when askedlinkedinRepost { account, post }, then linkedinRepostLive { account, post, approvedBy: "<owner>", confirmLive: true }LinkedIn commits the repost with its success toast
6Delete one of the account's posts, when askedlinkedinDelete { account, activity }, then linkedinDeleteLive { account, activity, approvedBy: "<owner>", confirmLive: true }LinkedIn answers that the post is gone
7Tell the owner what went outthe reply to the ownerthe post's URL, or what was liked or deleted

What the runs taught

  • The text is LinkedIn's, not ours. A post goes out as LinkedIn's composer sends it: LaunchCreatePost then CreatePost for text, and the image upload and RegisterImageMedia first for a picture. CreatePost's activity id decides that it posted.
  • Mentions are looked up, never guessed. @[Name] goes through LinkedIn's own mention search and needs exactly one match. Two or none refuse the post (mentionAmbiguous, mentionNotFound), so the dry run is where they get fixed.
  • The composer's follow-ups run after the post. When LinkedIn refuses one, the post is still live, the rest are skipped and nothing is retried (rule 94).
  • A like counts only when LinkedIn says so. The answer must commit the post's reaction state; otherwise it is likeUnconfirmed.
  • A repost counts only with LinkedIn's success toast. The answer must commit it and show the success toast; otherwise it is repostUnconfirmed.
  • Writes are few. A LinkedIn account writes at most 10 times a day. Every write waits for the owner's yes.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.