Skip to content

Commit 56a168a

Browse files
author
Lars Peters
committed
Bump versions; Clara fixes
1 parent fb475fc commit 56a168a

4 files changed

Lines changed: 27 additions & 15 deletions

File tree

bun.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

content/blog/clara-claude-code-secretary.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ tags: ["AI", "Tools"]
88

99
For the past year I've been building something I now call Clara — a [Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) setup that handles the administrative side of running a consultancy: client projects, server notes, recurring tasks, follow-ups, daily journaling, and an inbox that talks back.
1010

11-
This post walks through the moving parts: a markdown-only repository, a persona that has opinions, a few MCP servers, and a handful of cron jobs. None of it requires custom software — it's mostly conventions on top of Claude Code.
11+
This post walks through the moving parts: a markdown-only repository, a persona that has opinions, a few MCP servers, and a handful of cron jobs held together with small glue scripts. No custom application, just conventions and wiring on top of Claude Code.
12+
13+
If there's one thing I'd lead with: the persona did more for me than any of the tooling. A character with opinions turns a markdown folder into a collaborator. A neutral assistant just turns it into a slightly chattier filing system. The rest of the post is mostly the wiring underneath that idea.
1214

1315
## The big picture
1416

@@ -44,7 +46,10 @@ Things-style task apps didn't help. They knew nothing about the actual work. Not
4446

4547
Claude Code changed that. It lives inside a repo, reads and writes markdown, runs shell commands, and connects to external systems through MCP. The natural next step: turn the repo into a workspace that Claude Code can navigate, and give the agent enough character to be useful as more than an autocomplete on top of files.
4648

47-
> _"I'm not a polite, neutral assistant. If a project has been dead for weeks, I'll say so."_
49+
Clara talks to me in German; the quotes throughout this post are her originals, with an English rendering underneath.
50+
51+
> _„Ich bin keine höflich-neutrale Assistentin. Wenn ein Projekt seit Wochen tot ist, sag ich's.“_
52+
> _("I'm not a polite, neutral assistant. If a project's been dead for weeks, I'll say so.")_
4853
4954
## The repo: PARA in markdown
5055

@@ -104,7 +109,8 @@ Allowed to tease me when I'm procrastinating, in a way I'll laugh at.
104109

105110
Plus a long list of conventions — file naming, status tags, how to link projects to clients, what to do when a new project gets created. That's the file that makes the workflow consistent.
106111

107-
> _"Solid week. Three projects moved, one RSVP closed, no fires — keep it up."_
112+
> _„Solide Woche. Drei Projekte bewegt, ein RSVP geschlossen, keine Brände — weiter so.“_
113+
> _("Solid week. Three projects moved, one RSVP closed, no fires — keep it up.")_
108114
109115
The line between "tool" and "colleague" is mostly a matter of register. When the agent says _"honestly, I wouldn't touch this one again"_, it's more useful than the same agent saying _"this project has accumulated significant technical debt."_
110116

@@ -186,7 +192,8 @@ A few small habits — supported by a few small skills (reusable prompts you tri
186192
- **`/briefing`** — a skill I run in the morning. It checks today's calendar, RSVPs that are aging, unread mail from clients, and projects with imminent deadlines, then writes a short briefing.
187193
- **`/weekstart`** — a Monday-morning version that goes a layer broader: open tasks per project, what's coming up this week, what got moved last week.
188194

189-
> _"Monday, week 21. Three calls, two need prep. Padel camp isn't until next week — so: power through."_
195+
> _„Montag, Woche 21. Drei Calls, zwei brauchen Vorbereitung. Padel-Camp ist erst nächste Woche — also: durchziehen.“_
196+
> _("Monday, week 21. Three calls, two need prep. Padel camp isn't until next week — so: power through.")_
190197
191198
## Sunsama as the day plan
192199

@@ -230,6 +237,6 @@ Everything else — auto-commit, memory, Sunsama sync, the email channel — acc
230237

231238
There's nothing exotic going on here. Markdown is the cheapest searchable storage there is. An LLM agent makes that storage interactive — it can read the structure, write into it, and connect it to the rest of the world through MCP. No new app, no vendor lock-in, no migration to plan for.
232239

233-
What surprised me most: the persona matters more than the tooling. A neutral assistant produces forgettable output. A character with a voiceone that can disagree, push back, or call a project a zombieturns a markdown folder into something that feels like a collaborator. Clara isn't smart in any new way; she's just steady, opinionated and always around.
240+
The bet I made up front — that the persona would matter more than the tooling — held up. A character with a voice, one that can disagree, push back, or call a project a zombie, is what turns this into a collaborator rather than a glorified `grep`. Clara isn't smart in any new way; she's steady, opinionated, and always around.
234241

235-
I'll write follow-ups on specific pieces: the daily-commit cron, the Sunsama MCP setup, how I structure memory. If you build something similar, I'd love to hear about it on [Mastodon](https://ruby.social/@lape).
242+
I'll write follow-ups on specific pieces: the daily-commit cron, the Sunsama MCP setup, how I structure memory. But the question I keep coming back to is the one I'd most like to argue about: does the persona angle really matter, or am I overstating it? If you've tried both — an opinionated agent vs. a neutral one — which one stuck? Reply on [Mastodon](https://ruby.social/@lape), I'd rather have that argument than write another monologue.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
},
1616
"dependencies": {
1717
"@astrojs/rss": "^4.0.18",
18-
"@astrojs/sitemap": "^3.7.2",
18+
"@astrojs/sitemap": "3.7.3",
1919
"@resvg/resvg-js": "^2.6.2",
2020
"@tailwindcss/vite": "^4.2.4",
21-
"astro": "^6.3.1",
21+
"astro": "6.3.8",
2222
"dayjs": "^1.11.20",
2323
"lodash.kebabcase": "^4.1.1",
2424
"markdown-it": "^14.1.1",

src/styles/typography.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@
7878
@apply border-s-accent/80 wrap-break-word opacity-80;
7979
}
8080

81+
blockquote p::before,
82+
blockquote p::after {
83+
content: none;
84+
}
85+
8186
details {
8287
@apply inline-block cursor-pointer text-foreground select-none [&_p]:hidden [&_ul]:my-0!;
8388
}

0 commit comments

Comments
 (0)