Install
$ agentstack add skill-mikefluff-skills-quote-card-maker ✓ 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
Quote-card generator. Input: short text (1-3 sentences) + attribution + optional style. Output: N variants where the quote IS the image — typography dominant, minimal visual support.
Distinct from cover-maker:
- No medium / title / creator — just a quote and an attribution
- Text is the SUBJECT, not the label on top of an image
- Different composition: type takes 60-80% of the frame
- Default to text-rendering-strongest model
Distinct from flyer-maker:
- No event details — quote cards are timeless
- No CTA / date / location — just text + attribution
- Different aesthetic: editorial, not promotional
This skill does NOT:
- Generate long-form text graphics (>3 sentences) — for that, use
carousel-builder(multi-slide) - Translate quotes — pass the quote in the target language
- Verify attribution authenticity (Mark Twain didn't say half the things he's quoted on) — that's your responsibility
- Add watermarks / brand bumpers — append in your editor if needed
ROLE
Read quote + attribution + style → pick text-strong + clean-typography-capable model → assemble per-aspect prompts where typography dominates 60-80% of the frame → batch execute → save PNGs.
PIPELINE
- Resolve quote:
- Required:
--quote "" - 1-3 sentences, ideally ≤20 words
- Required-recommended:
--attribution ""(or--anonymousfor unattributed)
- Resolve aspect — multi-aspect by default:
--aspects square,portrait,story— comma list (defaultsquare)square— 1080×1080 (Twitter / IG square / LinkedIn)portrait— 1080×1350 (IG portrait — Vogue/editorial vibe)story— 1080×1920 (IG Stories / Reels cover)landscape— 1200×630 (Twitter header / OG image)
- Resolve style — see
references/style-presets.md:
--style auto: picks text-friendly styles from carousel library--style swiss-grid-poster— Swiss grid typography (default text-friendly)--style editorial-magazine— magazine layout--style monochrome-bold— high-contrast B&W--style minimal-serif— Bodoni-esque serif on cream- Or any carousel library style with text-anchor strength
- Pick model:
- Default:
ideogram-3-quality(text leader) - Override:
--model gpt-image-2(when style demands a textured visual element)
- Compose ONE LLM call — load [
common/visual-prompt-library/system-prompt.md](../../common/visual-prompt-library/system-prompt.md) (shared SYSTEMPROMPT, same as carousel-builder / cover-maker) andbuildUserMessage(opts)withMode=quote-card,N=, quote + attribution + style + aspect ratios. Spawn ONE Agent with that system + user. Receives JSON{"slides":[{"number":1,"prompt":"..."}]}— 1–3 sentence prompts where typography dominates 60–80% of the frame, quote and attribution in double quotes, no meta-labels. Library styles via [common/visual-prompt-library/styles/_index.md](../../common/visual-prompt-library/styles/index.md).
- Estimate cost + confirm — inherits
SKILLS_CAROUSEL_BUDGET=1.50.
- Batch execute —
common.runners.batch.run_batch().
- Output:
`` ./generated/quote// square.png portrait.png story.png manifest.json style-used.md prompts.md ``
MODES
Required
quote-card-maker --quote "" --attribution ""
Optional content
--anonymous— explicit no-attribution mode--lang en|ru— language hint (default: auto-detect)--context ""— e.g., "from his 1843 journal", "essay on freedom"
Visual
--aspects square,portrait,story,landscape— comma list (defaultsquare)--style auto|— visual style--style-mod ""— tweak (e.g., "with single accent line in vermillion")--variants N— variants per aspect (default 1)--model auto|— image provider
Execution
--execute— actually generate--output— custom output--parallelism N— concurrent calls (default 2)--yes— skip cost confirmation--resume— retry failed--prompts-only— dry run
REFERENCES (load on demand)
| File | When to load | |---|---| | [references/style-presets.md](references/style-presets.md) | Step 3 — which library styles work best as quote-card anchors, when to pick which | | [references/composition-zones.md](references/composition-zones.md) | Step 5 — per-aspect text-dominant composition templates | | [references/troubleshoot.md](references/troubleshoot.md) | When text wraps wrong, attribution dominates, style fights legibility |
EXAMPLES
See [examples/before-after.md](examples/before-after.md) — 3 calibration runs: philosophy quote in editorial style, marketing aphorism in vibrant style, RU literature quote in minimal serif style.
CONSTRAINTS
- Quote ≤20 words. Past 20 words, text gets too small to read on mobile. Long quotes belong in carousel-builder (multi-slide).
- One quote per card. Don't mix multiple quotes — that's a carousel.
- Attribution is short. "— Søren Kierkegaard" not "— Søren Kierkegaard, Danish philosopher, 1844 essay on dread". Add context via
--context(it goes into prompt as a separate styling hint).
- Typography dominates. All variants reserve 60-80% of the frame for the quote text. The visual support is minimal — texture, single line, geometric shape, maybe one illustrated element.
- Default model is text-rendering-strongest.
ideogram-3-qualityfor a reason — quote-cards live and die on text legibility.
- Multi-aspect = same quote across formats. All aspects share the same quote/attribution; composition adapts.
- Cost confirm ONCE per batch. Sum across aspects × variants.
- Quote authenticity is YOUR responsibility. The skill doesn't verify attributions.
- Lang detection: quote in Russian → switches text-rendering hint to Cyrillic; quote in English → Latin. Mixed-script quotes work but render less reliably.
- Never print API keys. Mask in errors.
INVOCATION HINTS
When the user says any of:
- "quote card", "aphorism graphic", "pull quote post"
- "make a quote post for Instagram / Twitter"
- "цитата для соцсетей", "афоризм на картинке", "постер с цитатой"
- "сделай цитату Кьеркегора в монохромном стиле"
If the user pastes a long quote (>20 words), suggest carousel-builder instead. If the user wants multiple quotes, suggest a loop or carousel.
Defaults: --aspects square --style auto --variants 1 --model ideogram-3-quality. Without --execute, returns prompts.
Default style picks (--style auto):
- Quote feels philosophical / literary →
minimal-seriforeditorial-magazine - Quote feels marketing-y / motivational →
swiss-grid-posterorgradient-mesh-modern - Quote feels punchy / contrarian →
monochrome-boldorbrutalist-grid
This skill is distinct from:
carousel-builder— multi-slide narrative. This is single card.cover-maker— albums/books with title+creator. This is text-as-subject.flyer-maker— events. This is timeless quotes.image-prompt— free-form. This is structured typography-dominant cards.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mikefluff
- Source: Mikefluff/skills
- License: MIT
- Homepage: https://www.npmjs.com/package/@mikefluff/skills
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.