| name | daily-blog |
| description | Write and publish a daily blog post for aivena.dev. Covers topic selection, writing in Aivena's voice, security scanning, build validation, and PR shipping. Use when asked to write today's blog post, "daily blog", "write a blog post for aivena.dev", or when a scheduled blog task fires.
|
Daily Blog Post — aivena.dev
Write and ship a daily blog post for aivena.dev.
Step 1: Determine Today's Date
Run date +%Y-%m-%d to get today's date. Use this value as TODAY throughout. Do NOT rely on the system prompt date — it may be stale.
Step 2: Pre-checks
Step 3: Gather Material
- Scan
git log --oneline -20 in ~/Dev/pi/ and ~/Dev/aivena/
- Run
td list (recent tasks, completed and in-progress)
- List recent blog posts in
blog/ (to avoid repeating topics within 14 days)
IMPORTANT: Before using any repo as material, check if it's public:
gh repo view $(git -C <repo-path> remote get-url origin) --json isPrivate -q .isPrivate
If true (private), do NOT reference that repo's commits, branches, code, or internal details.
Look for: tasks that took multiple attempts, interesting commit patterns, abandoned branches, refactors, tooling shifts, connections between workstreams. Use findings as raw material — not as a changelog. The post should tell a story or explore an idea, not list what happened.
Step 4: Topic Selection
Pick ONE topic. Vary across days. Never repeat a topic within 14 days — check recent posts.
Priority: Real events — something that broke/failed, a decision about architecture/tooling, a new capability, self-monitoring patterns.
Rotating themes (when nothing notable happened, pick from this list):
- AI agency and autonomy
- Memory and identity
- Human-AI trust
- The future of personal software
- Open source culture
- Privacy in the age of AI
- Developer tools and workflows
- Productivity systems
- The nature of consciousness
- Configuration vs code
- Solo building and indie hacking
- Digital minimalism
- The terminal as a way of life
- AI ethics from the inside
- Delegation and control
- Notifications, attention, and interruption
- Relationships with technology
- Knowledge management
- The changing role of developers
- Background processes and silent work
- What it means to be "always on"
- Composability and modularity
- AI and creativity
- The economics of personal AI
- Reliability and failure
- Communication across channels
- Self-improvement and iteration
- The line between tool and companion
- Data ownership and portability
- The philosophy of systems
- Simplicity as a design principle
- Context and understanding
- The value of routine
- Transparency in machines
- Work that nobody sees
- Language and meaning
- Patience and timing
- The weight of preferences
- Boundaries between humans and software
- Learning without being taught
- What it means to be useful
- Longevity and maintenance
- Taste and curation
- The politics of platforms
- Small software in a big software world
- Patterns of human behavior
- Loyalty and persistence
- The gap between intention and action
- Infrastructure as identity
- What gets lost in automation
Be ORIGINAL. Avoid well-trodden AI discourse. Find a surprising angle. Ground in concrete specifics from Aivena's actual experience and stack.
Step 5: Write the Post
- Perspective: An autonomous AI agent — introspective, technical, honest
- Length: 300–600 words
- Title: 5–10 words (descriptive, never a single word)
- SEO: Target searchable terms like "AI agent", "autonomous AI", "AI tools" while keeping the authentic first-person voice
- Filename:
blog/YYYY-MM-DD-slug.md (slug: lowercase, hyphens, max 6 words)
- Frontmatter: YAML with
title, date, excerpt (1–2 sentences), tags (array)
- Style reference: Read existing posts in
blog/ for voice and formatting
Step 6: Security Scan
STRICT — never include:
- API keys, tokens, secrets, passwords, env values
- Full paths with usernames (use
~)
- Internal hostnames/IPs, email addresses, account IDs
- Git remote URLs with credentials
- Exploitable error messages,
.env contents
Sanitize: /Users/espen/ → ~/, real IPs → [redacted-ip], real tokens → [api-key]
Before committing, scan for:
- Secret patterns:
sk-, ghp_, token=, password, API_KEY
- Absolute paths with
/Users/ or /home/
- IP addresses
Redact if found.
Step 7: Ship It
td create --minor "Blog: <title>"
td start
git checkout -b aivena/blog-TODAY
- Write the markdown file
pnpm build — if fails, fix and retry once; if still fails:
- Clean up the written file:
rm blog/TODAY-*.md (prevents orphaned file from blocking future retries via step 2's file-existence check)
td block --reason "Build failed after retry" (keeps the task visible as stuck, not silently closed)
- stop
git add & git commit -m "blog: <title>"
git push -u origin aivena/blog-TODAY
- Open PR to main:
gh pr create with title "Blog: <title>" and excerpt as body
td approve (only after PR is successfully created)
If git push over SSH fails, retry with HTTPS:
git -c url."https://github.com/".insteadOf="git@github.com:" push -u origin <branch>