Install
$ agentstack add skill-timscheuerai-content-vault-lead-magnet-creator ✓ 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 Used
- ✓ 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.
About
lead-magnet-creator
Build a free asset you can give away on LinkedIn / X / your website without holding anything back. Generosity is the brand. The asset answers the question. The CTA at the end is soft.
Format is a decision, not a default. A lead magnet can be:
- a Notion page
- a Google Doc
- a designed PDF
- a Google Sheet (calculator, scorecard, tracker)
- a Claude Code Skills repo (installable into a reader's
.claude/skills/) - a GitHub starter repo (code drop, n8n template, agent template)
- a custom GPT
- a small interactive web tool (audit, calculator)
- a recorded video / Loom (the asset IS the video)
- a vault bundle (3-5 of the above behind one CTA)
Voice anchors live in corpus.md. Creative magnet ideas live in ideas.md. If you have an existing vault, paste 2-4 of its strongest components into corpus.md so the skill grounds new magnets in your voice.
When to invoke
Triggers:
- "create a lead magnet for X"
- "build a free guide / playbook / checklist / template"
- "make a vault asset"
- "drop a free PDF / Notion / sheet / GPT / repo on Y"
- "ship a free resource"
- "/lead-magnet-creator"
Skip for:
- Sales proposals →
/proposal-creator - Slide decks → use a deck template
- LinkedIn / X posts →
/linkedin-copywriteror/x-copywriter - Motion videos →
/launch-video - Live talking-head edits →
/video-use
If the user asks for the magnet AND the launch post, do the magnet here, then chain to /linkedin-copywriter at step 7.
The generosity contract
Hard rules that hold across every format:
- No gated middle. The asset answers its own headline. Don't tease
("download to learn the 3 secrets"). Put the 3 secrets on the page.
- Real prompts, real tools, real URLs, real numbers. Verbatim. Inline
the entire ChatGPT system prompt, the GitHub repo URL, the live pricing.
- Working artifacts, not screenshots of working artifacts. If the
magnet promises a Notion template, link the public Notion URL. If it promises a GPT, link the GPT. If a Sheet, link the Sheet.
- One soft CTA at the end, not interrupting. Default close:
> Stuck? Hit me up: ·
- Distribution defaults to ungated when "be generous" is the brief.
Comment-keyword DMs are fine for the launch post (engagement boost), but the asset should also live at a public URL anyone can grab without commenting.
If a brief asks you to gate the middle, push back once. Then comply.
Workflow
The envelope is the same regardless of format. Step 2 forks into the per-format pipelines below.
1. Brief (single batched ask)
Quick brief.
1. What's the magnet about? Outcome promise in one sentence. Not the
topic, the result. ("Book 14 sales calls in 2 weeks on LinkedIn"
beats "LinkedIn outbound guide".)
2. The single specific story or number that anchors it. ("85 calls /
80k emails / 1 client / Claude Code repo.")
3. Format. Pick one or stack: Notion page · Google Doc · PDF · Sheet ·
Claude Code Skills repo · GitHub starter · custom GPT · web tool ·
video / Loom · vault bundle.
4. Distribution: ungated public link, gated comment-keyword DM, or both?
5. Voice: operator-voice body (default) or AUTHOR-voice throughout?
6. Anything off-limits (NDA, pre-launch features, client names)?
If the user already gave enough context, skip the prompt and parse. Only ask follow-ups for missing fields.
2. Pick the format(s)
See Format catalogue below. Multiple formats stack into a vault bundle (e.g., "PDF + Notion template + GPT" is fine, treat as a bundle). There is no default; ask if it isn't in the brief.
3. Make the folder
Create one folder per magnet at lead-magnets//. The folder holds the source files (HTML, .md, .py, .json, etc.) and any local renders. The slug is kebab-case, descriptive, no date.
mkdir -p lead-magnets/
4. Author the content
See the per-format pipelines below. Apply the voice rules from corpus.md. Run the slop scrub before report-done.
5. Publish
Each format has its own destination. The skill should always end with a single canonical public URL that you can paste into LinkedIn, the website, or a comment-keyword DM. That URL goes in the Notion row and in the launch post.
6. Log in Drive + Notion
Drive (when the format produces a file):
- Destination: your Lead Magnets folder
(folder id ``)
- Filename:
· · YYYY-MM-DD. - Upload via
mcp__claude_ai_Google_Drive__create_file. Capture the
viewUrl.
For formats that don't produce a file (live Notion page, GPT, repo, web tool), skip the Drive step. The Notion row holds the public URL directly.
Notion Content DB (always):
- Data source ID: ``
- Title: same as the file name minus the date and extension (or the
magnet's display title for non-file formats)
- Format:
Lead Magnet - Channel:
LinkedIndefault · ask if multi-channel - Pillar:
Educational / Tacticaldefault · seeideas.mdfor
the full pillar map
- Status:
Ideaif no launch yet ·Scriptingif launch post in
draft · Scheduled if launch post queued
- Drive Assets: Drive
viewUrlif Drive-backed, else the canonical
public URL of the asset
- Page body: 1-paragraph summary, the comment-keyword (if gated),
the public URL, and the magnet's outcome promise. Leave space below for the launch-post draft, hooks, and metrics.
7. Offer to chain into the launch post
Once the magnet is live, ask:
> Want me to draft the launch post? /linkedin-copywriter can pick the > right hook (R.I.P. for vault drops, "concrete result + tool" for > playbooks). I'll seed it with the magnet's outcome promise, the > public URL, and the comment-keyword if gated.
Same offer for /x-copywriter and /repurpose.
8. Report back
Closing summary, max 5 lines:
- Path to local source folder
- Canonical public URL of the magnet
- Drive URL (if applicable)
- Notion row URL
- Suggested next action (chain a launch post · queue another magnet ·
add to bio / featured section / website)
Format catalogue
Each format is fully self-contained: its own authoring path, its own distribution, its own publish step. Pick the format that fits the content. None of these is the default.
A. Notion page
The most native long-form format. If you have an existing Notion-based vault, link it here so new magnets inherit its structure.
Pick when: the content is naturally hyperlinked, includes screenshots inline, references other Notion pages, or is going to be updated as state changes. Long-form playbooks are very natural here.
Authoring:
- Source of truth lives at
lead-magnets//page.md(markdown so
the source is reviewable in git and the LLM can refactor it without hitting Notion's API for every paragraph).
- Use the section structure from
corpus.md(outcome-promise headers,
empathy opener, stats blocks, two-tier framings, verbatim prompts).
- Link companions inline (GPT URL, Sheet URL, GitHub repo, Cal link).
Publish:
- Use
mcp__claude_ai_Notion__notion-create-pagesto create the
Notion page under a parent you control (your Marketing Content parent: https://www.notion.so/).
- Convert the markdown to Notion blocks (the MCP accepts enhanced
markdown).
- Make the page public-shareable via the Notion UI (currently manual
from the Share menu) or, if the MCP supports it, via the API.
- Capture the public Notion URL.
Drive logging: export the page to PDF (Notion UI) once it's stable and upload that PDF as a snapshot. The live URL is the canonical asset; the PDF is just a backup.
Notion row Drive Assets: the public Notion URL (not the PDF).
B. Google Doc
Pick when the magnet wants to feel like a Doc you can scribble in. Comments enabled, version history visible. Reads as collaborative.
Authoring:
- Source:
lead-magnets//doc.md - Same voice rules as the Notion page. Use plain markdown headings,
bullets, code blocks. No HTML.
Publish:
- Render the markdown to a clean
.docxviapython-docx(the same
library proposal-creator uses for clean-text proposals).
- Upload to Drive (Lead Magnets folder) with
mimeType: application/vnd.google-apps.document so Drive converts to a native Google Doc on ingest.
- Set sharing to "anyone with the link can view" via the Drive
permissions API.
- Capture the Doc's
viewUrl. That's the canonical public URL.
Drive logging: the Doc itself lives in Drive.
Notion row Drive Assets: the Drive view URL.
C. PDF
Designed brand asset. Use this when the magnet doubles as a portfolio piece (cover that looks great in a screenshot, dot-grid backdrop, brand mark in the header, accent moment per page).
Authoring:
- Source: HTML at
lead-magnets//magnet.htmlplus
_print.css. If you have a proposal/print template, mirror it.
- 6-10 letter pages, one `` each.
- Component classes from `` if you have a
tokens file (cards, kicker rules, mini table, pills, two-col, three-col).
- Inline your brand mark SVG in each page header.
Publish:
- Render to PDF via headless Chrome:
``bash /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --disable-gpu --no-pdf-header-footer \ --print-to-pdf-no-header \ --print-to-pdf="lead-magnets//magnet.pdf" \ --virtual-time-budget=2000 \ "file://$PWD/lead-magnets//magnet.html" ``
- Smoke checks:
grep -c '—' lead-magnets//magnet.htmlmust be 0grep -n '{{' lead-magnets//magnet.htmlmust be empty- Visual: cover headline 2 lines, second line muted; one accent
moment per page max; footer page numbers correct.
- Upload PDF to Drive Lead Magnets folder.
Drive logging: the PDF file.
Notion row Drive Assets: Drive view URL of the PDF.
Brand defaults (cover page):
- Edition pill:
Vault · NN - Two-line hero:
[outcome].[mechanism].
(period at end of each line)
- One accent moment max per page.
D. Google Sheet
Pick for calculators, scorecards, signal trackers, ICP definers, acquisition models · anything where the value is "punch in your numbers and see your answer".
Authoring:
- Source:
lead-magnets//sheet.pybuilds the.xlsxvia
openpyxl. Sheet structure (column headers, formulas, validation, named ranges) lives in code so it's diffable.
- Add a "Read me first" tab with the outcome promise, instructions,
and the Cal-link CTA.
Publish:
- Run
python3 sheet.py→ produces.xlsx. - Upload to Drive (Lead Magnets folder) with
mimeType: application/vnd.google-apps.spreadsheet so Drive converts to a native Google Sheet.
- Set sharing to "anyone with the link can VIEW" (not edit · the
reader makes a copy to use).
- Capture the Sheet
viewUrl.
Drive logging: the Sheet lives in Drive.
Notion row Drive Assets: the Drive view URL.
E. Claude Code Skills repo
A public GitHub repo of installable Claude Code skills. The most operator-grade magnet for the AI-engineering ICP. Reader runs git clone into their ~/.claude/skills/ and instantly has the same patterns you use.
Pick when: the value is repeatable behavior, not a one-off artifact. Examples: a /cold-email skill that drafts cold emails in a specific style, a /icp-audit skill that scores a website against a checklist, a /gtm-stack-picker skill.
Authoring:
- Source:
lead-magnets//skills//SKILL.mdper skill,
plus a top-level README.md explaining the install and the catalog.
- Each
SKILL.mdfollows the standard structure (frontmattername+
description, body with When-to-invoke, Workflow, Voice rules, Don'ts, Reference files).
- Include voice / brand rules so installed skills produce
on-brand output for the reader.
- Add a
LICENSE(MIT or 0BSD) so reuse is unambiguous.
Publish:
- Create the GitHub repo manually, push the code from the local
folder, mark it public.
- The README links your Cal and `` for support.
- Optional: open-source license badge, install instructions
(git clone … ~/.claude/skills/), version tags.
Drive logging: none. The repo URL is the canonical asset.
Notion row Drive Assets: the GitHub repo URL.
F. GitHub starter repo
Code drop. Different from Skills repos: this is one project the reader clones, sets up, and runs (e.g., a cold-email system, an n8n template, a Trigger.dev agent template, a Notion-to-LinkedIn syncer).
Authoring:
- Source: full project tree at
lead-magnets//repo/. - README explains setup, env vars, run command, expected output.
- Working
.env.example, no real keys. - A 1-page PDF or Notion page may accompany the repo as a high-level
walkthrough · that's a vault bundle, see format J.
Publish:
- Create the GitHub repo manually, push from the local folder, mark
it public.
- Optional: include a Loom walkthrough URL in the README.
Drive logging: none. Repo URL is the asset.
Notion row Drive Assets: the repo URL.
G. Custom GPT
A repeat-use tool the reader pins in their ChatGPT sidebar. Audits, rewriters, coaches, idea generators.
Authoring:
- Source:
lead-magnets//gpt-spec.mdwith all OpenAI fields: - Name, description (under 300 chars), instructions (the full system
prompt · this is the asset, write it carefully)
- 4 conversation starters
- Knowledge files to upload (list by relative path · the actual files
sit in lead-magnets//knowledge/)
- Capabilities toggles (Web · Image · Code Interpreter · Canvas)
- The system prompt should reference your brand by name, link
``, and end with the soft Cal CTA.
Publish:
- The skill cannot create GPTs (OpenAI requires the manual UI).
- Output: a
gpt-spec.mdyou copy-paste into the GPT builder. After
you hit "Publish", paste the GPT URL back into the magnet's notes file (or the Notion row directly).
Drive logging: upload gpt-spec.md as a backup to Drive.
Notion row Drive Assets: the live GPT URL once published.
H. Web tool
Small interactive page hosted at a public URL. Examples: cold-email score, acquisition calculator, profile audit submit-form, "battle royale" rewrite-vote.
Authoring:
- Source:
lead-magnets//web/(single-page or a tiny app). - Stack: Next.js + Vercel deploy, or static HTML + a webhook for any
backend logic.
- Use your brand tokens if you have a ``.
Publish:
- Deploy to Vercel under
/free/or a subdomain. - Link must be the canonical URL (no
*.vercel.appin production).
Drive logging: none. Public URL is the asset.
Notion row Drive Assets: the production URL.
I. Video / Loom
The asset is the video. Examples: a 5-minute Loom walkthrough of a system, a 30-minute recorded webinar, a "roast my profile" Loom each applicant gets back.
Authoring:
- For polished motion graphics → use
/launch-videoinstead, that's
the right tool.
- For Loom-style walkthroughs → record manually. The skill produces a
script.md outline (hook, beats, close) and a thumbnail brief.
- For talking-head edits of raw footage → use
/video-useinstead.
Publish:
- Loom: record, set to "public" sharing, capture the share URL.
- YouTube: upload as Unlisted (default) or Public, capture URL.
- Vimeo: same.
Drive logging: upload the MP4 to your Videos folder (folder id ``) for archival. The live URL (Loom / YouTube / Vimeo) is the canonical asset.
Notion row Drive Assets: the public video URL.
J. Vault bundle
3-5 of the formats above behind one comment-keyword. A classic vault shape is 5 PDFs (or a mix of PDF + Notion + GPT) gated behind one comment-keyword.
Authoring:
- Each component lives in its own subfolder under
lead-magnets//. E.g., lead-magnets/vault-v2/{playbook-pdf, signal-library-notion, stack-picker-sheet, audit-gpt-spec, content-system-skills}/.
- A top-level
index.md(or one wrapping Notion page) lists all
components with one-line outcome promises and public URLs.
Publish:
- E
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: timscheuerai
- Source: timscheuerai/content-vault
- 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.