Content Writer Agent
mastra-ai/mastra
Authoring playbook for building agents that draft written content — blog posts, marketing copy, social media posts, newsletters, product descriptions, landing pages, or ad copy.
The blog room, where every redlamp.app blog post is tracked from idea to announcement in a canvas the owner marks as they post.
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pdcgomes/redlamp redlamp-blog --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/redlamp-blog .claude/skills/redlamp-blog && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .claude/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blogType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pdcgomes/redlamp redlamp-blog --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/redlamp-blog .agents/skills/redlamp-blog && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .agents/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pdcgomes/redlamp redlamp-blog --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/redlamp-blog .cursor/skills/redlamp-blog && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .cursor/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pdcgomes/redlamp.git --path .cursor/skills/redlamp-blog--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pdcgomes/redlamp redlamp-blog --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/redlamp-blog .gemini/skills/redlamp-blog && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .gemini/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pdcgomes/redlamp redlamp-blogInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/redlamp-blog .github/skills/redlamp-blog && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .github/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pdcgomes/redlamp --skill redlamp-blog -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pdcgomes/redlamp redlamp-blog --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pdcgomes/redlamp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/redlamp-blog .opencode/skills/redlamp-blog && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "redlamp-blog" agent skill from https://github.com/pdcgomes/redlamp/tree/main/.cursor/skills/redlamp-blog into .opencode/skills/redlamp-blog/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "redlamp-blog", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
redlamp-blogThe blog room, where every redlamp.app blog post is tracked from idea to announcement in a canvas the owner marks as they post.
Redlamp Blog is an agent skill from pdcgomes/redlamp. The blog room, where every redlamp.app blog post is tracked from idea to announcement in a canvas the owner marks as they post. It covers the posts that are live, the ones in the pipeline, each post's kit for announcing it (its card as a still, a GIF and an MP4, the X and LinkedIn copy, alt text) and a record of what has been posted where. Makes a post's card in the house style and writes its copy in the owner's voice. Use when writing, publishing or announcing a blog post, making its tweet, LinkedIn post or…
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `card/render.py` and `room.py`).
It sits in Writing & Content, covering Social media posts and Blog and article writing. It works with LinkedIn and macOS. The repository describes itself as: A native, open-source RAW photo editor for Mac, iPad and iPhone that feels immediately familiar to Lightroom users. The licence is MPL-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9587460. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Redlamp Blog loads about 2.1k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 1,171 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pdcgomes/redlamp at commit 9587460, republished under its MPL-2.0 licence (© pdcgomes). 1,171 words, ~2,100 tokens.
.claude/skills/redlamp-blog/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Every blog post is tracked in one canvas, the blog room: the posts that are live, the ones in the pipeline, each post's kit for announcing it, and a record of what has been posted where. The owner keeps it open to find a post's card and copy, and marks each share as it goes out. A post's material lives in the repository, never only in /tmp or in another worktree's build/, which is where the first cards were lost.
| What | Where |
|---|---|
| The room | ~/.cursor/projects/Users-pedrogomes-src-darkroom/canvases/blog-room.canvas.tsx, from template.tsx. Edit only its room object; room.py thumbs writes its THUMBS. A change to the rendering goes into the template and the room together. |
| Posts | web/content/blog/<slug>/index.md, with its images beside it (web/README.md, The blog; the checks and capture script are in .cursor/skills/redlamp-site/SKILL.md) |
| A post's kit | docs/blog/social/<slug>/: card.json (the card's words) and posts.md (the X and LinkedIn copy, what to attach, alt text, and where each went), committed; card.png, card.gif, card.mp4 and thumb.jpg, rendered and gitignored |
| Copies to post from | ~/Downloads/redlamp-<slug>.png, .gif and .mp4. macOS keeps Downloads from Cursor: agents can write there but not list or read it, and the room opens the kit's own copies instead. |
| Facts for a post not yet written | docs/blog/facts/<slug>.md, each fact with its source |
| The card | card/card.html and card/render.py |
| Where things stand | room.py status |
Articles, the site's technical pieces (web/content/articles/<slug>/index.md, at redlamp.app/articles), are announced and tracked the same way as posts: a kit in docs/blog/social/<slug>/, and a post in the room with section: "articles". The first, Linear vs scene-referred, has its card drawn in pixel art with the pixel-graphics skill, by card.py in its kit, instead of card/card.html.
Read ~/.cursor/skills-cursor/canvas/SKILL.md once per session before the first write to the room. Link the room in every reply that changes it: [Blog room](/Users/pedrogomes/.cursor/projects/Users-pedrogomes-src-darkroom/canvases/blog-room.canvas.tsx).
blog-room.canvas.data.json, beside it, under needsYou ({ "<id>": { "state": "done" | "skipped" | "asked", "at": "…" } }) and shares ({ "<share id>": { "state": "posted" | "scheduled" | "draft" | "skipped", "at": "…" } }, where draft is the owner's Not posted). Never write that file. Fold each mark into room: the share's state and when, a row in posted that says it rests on the owner's mark, and the channel's status line in the kit's posts.md. A Needs you item that names the share then shows as done by itself. When the owner gives a post's address on the platform, it goes in the share's link and the posted row.python3 .cursor/skills/redlamp-blog/room.py status. Never take dates or states from memory. It lists the posts and articles on origin/main with their dates, drafts and whether redlamp.app serves them; each kit's files; the fact sheets; and blog files that are only on another branch or uncommitted in a worktree.summary, upNext, needsYou, posts, pipeline, posted, a log entry and updated. Say plainly what you didn't check.docs/blog/facts/<slug>.md, each with its source. Put the post in pipeline with its stage: idea, promised (a post already says it's coming), collecting, facts ready, drafting or draft.web/README.md (The blog) describes, in a worktree of its own when other sessions are committing to main. Its images go beside index.md; a canvas is captured with .cursor/skills/workstream-canvas/capture.py.pipeline to posts, and make its kit.docs/blog/social/<slug>/card.json. title is the post's title in lines broken at phrases, two or three of them. subtitle is two plain sentences in the owner's voice: a fact from the post, then "This is how I …". titleSize (128 pixels by default) only when three lines don't fit. A [bracketed] part of the subtitle is picked out in white; the owner prefers none (5 October). eyebrow and url default to "From the blog" and "redlamp.app/blog"./tmp/rl-card/bin/python .cursor/skills/redlamp-blog/card/render.py docs/blog/social/<slug> --still and look at card.png. Then render it all with --downloads, which takes a minute or two, and look at a few of the GIF's frames as well. It stops when a line runs past the margins or the text comes within 40 px of the lockup, and warns when the GIF is over the 5 MB X allows from a phone.posts.md, laid out as the existing kits are:card.mp4, which LinkedIn plays, or card.png.shares, word for word from posts.md, each with an ID (x-<slug>, linkedin-<slug>); upNext set to the post; a Needs you item for each share, naming it in share so the item takes the share's buttons; then python3 .cursor/skills/redlamp-blog/room.py thumbs.posted lists everything posted to announce Redlamp or a post, newest first: the blog's shares and the rest, such as Reddit, Product Hunt or a promo. Each row says what it rests on: a link, the owner's mark, his word in a chat (with the chat's ID), or only a draft. A share that was planned or scheduled but never confirmed is unconfirmed, with a Needs you item asking. Nothing is recorded as having gone out on less than the owner's word or a link.
The site's prose is largely agent-written, so take the owner's voice from his own messages in the agent transcripts (~/.cursor/projects/Users-pedrogomes-src-darkroom/agent-transcripts/*/*.jsonl, the "role":"user" lines), not from the posts. He writes plainly, in the first person, with phrases such as "a bunch of", "essentially", "Ideally" and "to be honest", and short sentences for emphasis. No em or en dashes, no superlatives the README doesn't make, and none of the usual tells ("delve", "seamless", "game-changer", "unlock", a closing moral). British spelling (docs/brand/README.md). He has turned copy down as "too AI slop-py"; when in doubt, write it plainer.
Claim only what the post or the README says, checked against them.
The owner shapes the room as needs come up. A new list, state or button goes into the template and this skill in the same change, and the room picks it up. Commit both on main: Blog room: ….
© pdcgomes, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in .cursor/skills/redlamp-blog of pdcgomes/redlamp.
Open the folder on GitHubat commit 9587460
Redlamp Blog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Redlamp Blog this skillpdcgomes/redlamp | 231 | — | ~2.1k | Automated safety check: Pass | MPL-2.0 | |
| Content Writer Agentmastra-ai/mastra | 29k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Content Writerchrispangg/deepagentsdk | 128 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Code Snippet Imagesfreekmurze/dotfiles | 1k | — | ~1.1k | Automated safety check: Notes | None | |
| Social Media Managementmanojbajaj95/claude-gtm-plugin | 105 | 1 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Li RepurposeJakeschincariol/linkedin-agent-skill | 1.7k | — | ~680 | Automated safety check: Pass | MIT |
mastra-ai/mastra
Authoring playbook for building agents that draft written content — blog posts, marketing copy, social media posts, newsletters, product descriptions, landing pages, or ad copy.
chrispangg/deepagentsdk
Writing content across different platforms and styles. An agent skill from chrispangg/deepagentsdk.
freekmurze/dotfiles
Generate beautiful code snippet images (PNG) for social media, tweets, LinkedIn, and documentation.
manojbajaj95/claude-gtm-plugin
Comprehensive social media management for all platforms (LinkedIn, Twitter/X, Instagram, TikTok, Facebook, Pinterest, YouTube).
Jakeschincariol/linkedin-agent-skill
Turn one long asset - a YouTube video, podcast, newsletter, blog post, transcript or client call - into a week of LinkedIn posts.
AgriciDaniel/claude-blog
Repurpose blog posts for social media, email, video, podcast, and community channels.
pdcgomes/redlamp
Redlamp Bench, the way an agent asks the owner to do a step in another app and gets the results back without anyone moving files.
pdcgomes/redlamp
The Redlamp User Manual (docs/manual), a dense, book-style PDF for photographers, typeset from Markdown and a print style sheet by Chrome, with its ranges, defaults and shortcuts generated from the…
pdcgomes/redlamp
The promo studio, which makes Redlamp's short promotional videos for social feeds the way a small creative agency does - a brief, hooks and copy, a script on a music grid, visuals from the promo…
pdcgomes/redlamp
Map of redlamp.app, the Next.js website in web/: its stack and commands, its pages, the home page's sections with their anchors, components and content sources, the brand's Tailwind tokens and…
pdcgomes/redlamp
The press room, where every outlet Redlamp is pitched to (newsletters, Mac and photography sites, developer and open-source communities, lists and directories) is tracked from finding it to its…
pdcgomes/redlamp
The release room, where every Redlamp release is prepared, checked, approved and shipped.
Categories
The blog room, where every redlamp.app blog post is tracked from idea to announcement in a canvas the owner marks as they post. Redlamp Blog is an agent skill from pdcgomes/redlamp.app blog post is tracked from idea to announcement in a canvas the owner marks as they post.
Redlamp Blog fits situations like: announcing a blog post; making its tweet; looking for a posts images; asking whats been posted.
Run `npx skills add pdcgomes/redlamp --skill redlamp-blog -a claude-code`. Or copy the skill folder (.cursor/skills/redlamp-blog in pdcgomes/redlamp) into .claude/skills/redlamp-blog in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pdcgomes/redlamp --skill redlamp-blog -a codex`. Or copy the skill folder (.cursor/skills/redlamp-blog in pdcgomes/redlamp) into .agents/skills/redlamp-blog in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pdcgomes/redlamp --skill redlamp-blog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/redlamp-blog, .gemini/skills/redlamp-blog, .github/skills/redlamp-blog and .opencode/skills/redlamp-blog in your project.
Going by SKILL.md and its folder, Redlamp Blog needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Redlamp Blog is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Redlamp Blog: Content Writer Agent (mastra-ai/mastra, 29k stars), Content Writer (chrispangg/deepagentsdk, 128 stars), Code Snippet Images (freekmurze/dotfiles, 1k stars) and Social Media Management (manojbajaj95/claude-gtm-plugin, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pdcgomes (a GitHub user) maintains it in pdcgomes/redlamp, which has 231 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 11, 2026.
Source: pdcgomes/redlamp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.