li-plan
Skill3 starsChanged 30 days agoMITView on GitHub
Build the week on LinkedIn - what to post, when to post it, and who to engage with. Use when the user says "plan my week", "what should I post", "content calendar", "I have nothing to post about", or wants a posting schedule and an engagement list.
8 other projects use a version of this, 7 of them edited.
Adopted by
Most recently taken up by
- furkanbilalakyuz/linkedin-agent-skill-tredited, first seen Nov 8, 2026
- HemanthMChakravarthy/linkedin-agent-skillstheir own version, first seen Nov 8, 2026
- mkmlabs-ai/linkedin-agentedited, first seen Nov 8, 2026
- mubaid/dsh-linkedin-agentedited, first seen Oct 25, 2026
- robbiehaynes/job-searchedited, first seen Oct 20, 2026
- avi691/linkedin-agent-skilledited, first seen Oct 8, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 7
- Jakeschincariol/linkedin-agent-skill★ 51494% same
- avi691/linkedin-agent-skill★ 594% same
- mkmlabs-ai/linkedin-agent★ 494% same
- nessalazne/linkedin-agent-skill★ 392% same
- furkanbilalakyuz/linkedin-agent-skill-tr★ 079% same
- mubaid/dsh-linkedin-agent★ 094% same
- robbiehaynes/job-search★ 094% same
Wrote their own version · 1
- HemanthMChakravarthy/linkedin-agent-skills★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- li-auditSkill
- li-carouselSkill
- li-commentSkill
- li-dmSkill
- li-humanSkill
- li-inboxSkill
- li-postSkill
- li-profileSkill
- li-publishSkill
- li-replySkill
- li-repurposeSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
If ~/.linkedin-agent/voice.md and log.md exist, read them.
- Distinctive: line 64
If the PostZen MCP tools are in this session, two things improve and one does not.
- Very specific: line 72
Queue slots: If the user wants a standing schedule rather than a time per post, PostZen's queue does that: posts go in with …
- Very specific: line 131
Write the plan to ~/.linkedin-agent/plan.md so the other skills can read it.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
li-plan
The control room. Everything else in this pack executes; this decides what gets executed. Run it once a week, on the same day.
Input
If ~/.linkedin-agent/voice.md and log.md exist, read them. Older installs
kept these in ~/.claude/linkedin/; read from there if the new folder is
missing. The plan should not repeat a theme from the last fortnight. If they do
not exist, ask for four things and write them down:
- What the user sells, and to whom.
- The three or four themes they want to be known for.
- What actually happened this week - a client call, a number, a mistake, a thing they built, an argument they had. This is where posts come from.
- Ten to twenty people or companies worth being visible to.
What to post
Four posts a week beats seven. Consistency is a floor, not a target, and the fifth post of a week is almost always the weak one that drags the average.
Mix across the week, never two of the same type back to back:
| type | share | job |
| Proof | 1 per week | something that happened, with a number |
| Opinion | 1 per week | a position that could lose you followers |
| Teach | 1 per week | one thing the reader can do today |
| Story | 1 per fortnight | a scene with dialogue and a cost |
| Offer | 1 per fortnight | what you sell, said plainly, no apology |
For each slot give: the theme, the specific angle drawn from what actually
happened this week, and the hook formula number from li-post/hooks.json that
fits it. Not a topic - an angle. "AI" is not a plan. "The proposal we lost
because our AI draft had an em dash in it" is a post.
When to post
Post when the user's audience is at a desk. For a B2B audience in one timezone, Tuesday to Thursday, 7:30-9:30am local, is the working default, with Monday afternoon and Friday morning as the second tier. Weekends are for personal-story posts or nothing.
But state this plainly: the day and hour matter far less than whether the first line is good. If the user is optimising posting times before their hooks work, they are polishing the wrong thing, and you should say so.
Anchor the times to their audience's timezone, not the user's, if those differ.
With PostZen connected
If the PostZen MCP tools are in this session, two things improve and one does not.
What is already booked. listPosts({ platform: "linkedin", accountId,
status: "scheduled", sortBy: "scheduledFor" }) shows every scheduled post,
queued ones included, so the plan does not double up a day. Only posts
created in PostZen appear here.
Queue slots. If the user wants a standing schedule rather than a time per
post, PostZen's queue does that: posts go in with queuedFromProfile and
take the next free slot.
listProfilesfor theprofileId, thenlistQueueSlots({ profileId, all: true })to see what exists, including the next five free instants.createQueueSlot({ profileId, timezone: "America/New_York", slots: [{ dayOfWeek: 2, time: "08:15" }, { dayOfWeek: 4, time: "08:00" }, { dayOfWeek: 5, time: "08:30" }], name: "LinkedIn" })creates a whole queue, not one slot.dayOfWeekis 0 for Sunday,timezoneis an IANA name. The first queue on a profile becomes its default. Show the slots with the timezone and get a yes before creating.updateQueueSlot({ profileId, timezone, slots, queueId })replaces every slot in that queue; it is not a nudge to one slot. Send the full list each time. Posts already placed keep their times unlessreshuffleExisting: true.deleteQueueSlotwithout aqueueIddeletes every queue on the profile. Never call it without one, and confirm with the user first.previewQueue({ profileId })returns the upcoming free instants, not the posts in them, and reserves nothing. For posts, uselistPostsas above.
What does not change: the timing. PostZen has no LinkedIn engagement data
yet (analytics are waiting on LinkedIn's approval), so it cannot tell you when
this account's audience responds. getBestTimeToPost will most likely come
back empty for LinkedIn. The times in the plan are still the general default
above, and say so. They are not personalised.
Who to engage with
Build a list of 10, split three ways:
- 5 reach - people with an audience the user wants, whose posts they can genuinely add to. Comment before they have 20 comments or nobody sees it.
- 3 peers - same level, same field. This is the group that reciprocates.
- 2 buyers - people who could actually buy. Comment on their posts for weeks before any DM, and never pitch in a comment.
20 minutes a day, before posting, not after. Comments on other people's posts are what makes the user's own post land.
Output
WEEK OF SEP 8
MON engage only (20 min, list below)
TUE 8:15am PROOF #17 Time Anchor - the 5hr -> 20min proposal rebuild
WED engage only
THU 8:00am OPINION #1 Contrarian - why we killed the discovery call
FRI 8:30am TEACH #21 Direct Value - the 4-line reopen email, given away
SAT -
SUN 4:00pm STORY #9 Cold Open - the "going with someone cheaper" email
ENGAGE (5 reach / 3 peers / 2 buyers)
...
Say "write Tuesday" and I will draft it.Write the plan to ~/.linkedin-agent/plan.md so the other skills can read it.
Writing a time into the plan schedules nothing. The user runs the plan, or
/li-publish schedules each post once it is written and approved.
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
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.

