Install
$ agentstack add skill-spirosbax-insaight-draft-post ✓ 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
Insaight — Draft LinkedIn Post
Write posts for the user's own company page (COMPANYNAME and COMPANYLINKEDIN from insaight:get_config()) by loading that company's actual published posts first and using them as the style reference. The company's own archive is the only reliable source of their voice — anything drafted from general LinkedIn instincts will sound like everyone else's LinkedIn.
Shared conventions (all Insaight skills):
- Call
insaight:get_config()once per session for the user's Notion pages
and company name/slug. If it reports unconfigured: true, ask the user to edit the file at the returned path before saving to Notion.
- Read cheaply:
list_accounts→list_posts(slim index) →get_postson
the few URNs worth reading (max 20 per call). list_people / list_comments are free; the scrape_* tools call Apify and cost money — only scrape when data is missing or stale.
- Engagement benchmarks (adjust for the niche): "I couldn't fetch the full article at [URL]. Paste the key paragraph or stat
> you want to build the post around and I'll draft from that."
Treat the fetched content as the brief for Step 3 — the URL is the brief, so don't ask the user to restate it.
Step 3 — Understand the brief
The user has given a topic, angle, rough idea, or URL. Before drafting, settle internally:
- Goal: Awareness, thought leadership, lead gen, community, announcement,
opinion?
- Audience: Prospects, peers, recruits, partners, or general?
- Angle: What is the non-obvious take that makes this worth posting rather
than filler?
- Evidence: Is there a specific story, stat, customer, or moment to anchor
it? Concrete anchors are what make a post land, so flag it when the user hasn't supplied one.
If the brief is very thin (a few words, no angle), ask one clarifying question first — drafting twice costs more than asking once:
> "Quick question before I draft: is this meant to build [COMPANY_NAME]'s > thought leadership on [topic], or is there a specific story / moment / > customer angle you want to anchor it to?"
Step 4 — Draft two variants
Produce two variants, both in [COMPANY_NAME]'s extracted voice. Two lets the user choose a direction instead of critiquing a single draft.
Variant A — Hook-led / insight-first
Opens with the sharpest statement, stat, or provocation and reaches the point in line 1; the rest supports or expands it. Suits opinion pieces, contrarian takes, industry observations.
Variant B — Story-led / scene-first
Opens inside a moment, conversation, or situation, with the insight landing at the end. Suits customer stories, team moments, "we learned this the hard way" posts.
Match the reference for each variant:
- Line break density — don't default to dense paragraphs if their posts are
staccato, or vice versa.
- Emoji frequency and placement.
- CTA style — if [COMPANY_NAME] never hard-sells, a "DM us" closer breaks the
voice; only add one if the sample shows it.
- Hashtag count and placement.
- The language(s) they post in, unless the user asks for another.
- Their typical length range from Step 2.
Step 5 — Visual brief (optional, on by default)
After the drafts, add a short visual brief that can go straight to a designer or into an image generation tool:
🎨 Visual brief
Format: [square / landscape / portrait — match LinkedIn norms]
Style: [photography / illustration / data visual / screenshot / etc.]
Mood: [adjectives — e.g. "clean, optimistic, technical"]
Main element: [what should dominate the frame]
Text overlay: [suggested 3–8 word headline to overlay, if any]
What to avoid: [clichés this topic attracts — e.g. "no stock handshake photos"]
Image prompt (copy-paste ready):
"[full prompt]"
Make the image prompt specific about style, composition, subject, lighting and mood; a generic prompt produces generic stock-looking output.
If a visual would feel bolted on (pure opinion piece, personal reflection), say so and skip the brief.
Step 6 — Show your work briefly
Lead with 2–3 lines before the drafts:
- Which style signals you're matching from the loaded posts.
- Which angle you're leading with, and why.
This lets the user course-correct before reading two full drafts.
After drafting
- Offer to iterate: "Want me to sharpen the hook, change the angle, or try a
different format?"
- Produce a third variant or a specific format (carousel, poll, video script)
on request.
- Don't save drafts to Notion — save-notion is for research briefs, and drafts
aren't research. Only save if the user explicitly asks.
- If the user says they published it, offer to scrape it into the Insaight DB
so it joins the style reference for next time.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: spirosbax
- Source: spirosbax/insaight
- 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.