new-post skill
Create and write blog posts for p.umputun.com — a personal blog in Russian by Umputun.
Quick Start
- •
/new-post <topic>— start a new post on the given topic - •
/new-post— interactive brainstorm session to find a topic
Writing Style
Read references/writing-style.md before writing any content. It contains extracted patterns from 48 existing posts: tone, structure, conventions, and representative examples.
Key points:
- •Language: Russian, conversational, first person
- •Tone: direct, opinionated, honest, dry humor
- •No emoji, no clickbait, no "dear readers"
- •Section headers in lowercase Russian
- •Abbreviations: "т.е.", "т.к.", "т.д."
Workflow
Phase 1: Topic & Brainstorm
If the user provides a topic, discuss:
- •What angle to take (technical how-to, project story, opinion piece, practical guide)
- •Target audience (fellow developers, general readers, podcast listeners)
- •Key points to cover
- •Rough length estimate
If no topic provided, help brainstorm by asking:
- •What have you been working on recently?
- •Any problems solved that others might find useful?
- •Any opinions on recent tech/events worth sharing?
Phase 2: Create Post File
Generate the slug from the topic (English, lowercase, hyphenated). Use today's date:
make new_post POST_NAME=YYYYMMDD-slug
This creates content/posts/YYYYMMDD-slug.md with Hugo frontmatter scaffolding.
Set up the frontmatter:
--- title: "Title in Russian" slug: english-slug date: YYYY-MM-DDTHH:MM:SS-06:00 draft: true tags: ["для гиков"] ---
Tag selection guide:
- •
["для гиков"]— technical posts, programming, tools, services (~45% of posts) - •
["разное"]— general topics, opinions, non-tech (~31%) - •
["назад в прошлое"]— nostalgia, historical (~10%) - •Multiple tags possible:
["технические темы", "для гиков"]
Phase 3: Outline
Propose a structure based on post type:
Technical project story:
- •Opening: problem/context that led to the project
- •
<!--more-->(for long posts) - •
## TL;DR(optional, for long posts) - •
## история вопроса/## с чего все началось - •
## подход к решению/## детали реализации - •
## результаты - •Optional italic closing remark
Opinion/commentary:
- •Opening: state the thesis directly
- •
<!--more-->(for long posts) - •Main arguments as
##sections - •
## выводыor closing paragraph - •Optional italic caveat
_text_
Service/tool review:
- •Opening: one-line summary verdict
- •
## TL;DR - •
## с чего все началось— why you looked at this - •Feature sections with
## - •
## странности и сложности— honest problems - •
## выводы
Practical guide:
- •Opening: why this guide exists
- •Numbered or sectioned instructions
- •Practical recommendations with personal experience
- •Closing caveat about subjectivity
Phase 4: Draft
Write sections iteratively, presenting each for review before continuing.
Draft rules:
- •Follow
references/writing-style.mdstrictly - •Write in Russian, matching the author's voice
- •Use characteristic phrases naturally (don't force them)
- •Keep paragraphs focused — one idea per paragraph
- •Use
##and###for structure (lowercase headers) - •Include code blocks with language tags where relevant
- •Add links to referenced tools/projects
- •Place
<!--more-->after the first paragraph for longer posts
After each section, ask:
- •Does this match what you had in mind?
- •Should I expand, compress, or change the angle?
- •Any specific details or anecdotes to add?
Phase 5: Images
When images are needed:
Single image per post:
- •Copy to
static/images/posts/filename.png - •Reference:

Multiple images:
- •Create directory:
static/images/posts/<slug>/ - •Copy images there
- •Reference:

Float image (decorative, alongside text):

Collapsible image gallery:
<details> <summary>Caption describing the images</summary>   </details>
If the user provides images that need resizing, use Python/Pillow:
python3 -c "from PIL import Image; img=Image.open('input.png'); img.thumbnail((1200, 1200)); img.save('output.png', optimize=True)"
Phase 6: Review & Refine
Before marking as ready:
- •Re-read the full draft for flow and tone consistency
- •Check that section headers follow conventions (lowercase Russian)
- •Verify all links work
- •Ensure code blocks have language tags
- •Check image references point to correct paths
- •Verify frontmatter is complete and correct
Phase 7: Preview & Publish
Preview:
hugo server -D
The draft post will be visible at http://localhost:1313/. If agent-browser is available, use it to screenshot and verify the post renders correctly.
Publish:
- •Set
draft: falsein frontmatter - •Generate English translation using the
translate-postskill — run/translate-post <filename>to create the.en.mdversion - •Remind the user to commit:
code
The post and its English translation are ready. When you're satisfied, commit and push to master — Cloudflare Pages will deploy automatically.
Working with Existing Drafts
If the user wants to work on an existing draft:
- •List drafts: search
content/posts/for files withdraft: true - •Read the draft
- •Discuss what needs work
- •Apply the relevant phase (outline, draft, refine, images, publish)