pivoshenko.ai
June 12, 2026 · View on GitHub
Overview
This repository is managed with Kasetto — it pulls personal and external skills and MCPs from upstream repositories into one synced setup. The full source list lives in kasetto.yaml.
What's in here?
- Locally authored skills, see
skills/ - Locally authored MCP definitions, see
mcps/ - External skills and MCPs, see
kasetto.yaml
Main principles
- Minimalism — keep only skills and MCPs that are used daily
- Consistency — same conventions across all locally authored skills
- Composability — skills are small, single-purpose, and chainable
- Source of truth — upstream skills are pulled, not forked, so updates stay free
Personal wiki (second brain)
An Obsidian vault maintained primarily by Claude Code, inspired by Karpathy's LLM-maintained notes. Three pieces, one job each:
- Schema in the vault — the vault's own
CLAUDE.mdholds all conventions (folder map, frontmatter contract, linking rules, standing duties);INDEX.mdis the catalog the agent reads first;LOG.mdis an append-only journal of agent actions. The schema is a live file in the vault — no repo mirror. - Workflow skills in this repo —
wiki-capture,wiki-summarize,wiki-project,wiki-write,wiki-lint, plus theobsidian-markdownsyntax reference. Skills hold process only and defer to the vault schema — zero duplicated conventions. - Templates in the vault — one note template per type under
99 TEMPLATES/, usable both by the skills and manually via Obsidian (including mobile).
Supporting decisions, so the setup stays repeatable:
- Memory in the wiki — each
~/.claude/projects/<slug>/memoryis a symlink into the vault's97 MEMORY/<project>/, so Claude's persistent memories live in the wiki while the harness reads them natively. The migration rule lives in my global CLAUDE.md (see Rules). - No premature tooling — no Dataview, no Zettelkasten IDs, no embeddings; search is
rg+INDEX.mduntil the vault passes ~200 notes, then qmd. - Audit + rollback —
LOG.mdrecords what agents did; an external git mirror records the content. The mirror's.gitlives at~/.vault.git(outside iCloud, invisible to Obsidian, local-only — never pushed), snapshotted hourly viascripts/vault-snapshot.sh. The scheduler is machine-local setup, deliberately not in dotfiles (it's OS-specific): macOS — a launchd plist in~/Library/LaunchAgentsrunning the script hourly; Linux — a cron line (0 * * * * sh .../scripts/vault-snapshot.sh).
To repeat it: create the vault folders + CLAUDE.md/INDEX.md/LOG.md per the vault's own CLAUDE.md, copy the templates idea, and sync the wiki-* skills via Kasetto (see below).
Rules
The CLAUDE.md files used outside this repository live with their owners:
- My global CLAUDE.md — canonical in
pivoshenko.dotfiles(dotfiles/.claude/CLAUDE.md), deployed to~/.claude/CLAUDE.mdby dotdrop - The vault's
CLAUDE.md(the wiki schema) — a live file inside the vault itself, no repo mirror
Installation
- Install Kasetto, see the installation guide
- Sync skills and MCPs into your local Claude Code config — either run:
kst sync --config https://github.com/pivoshenko/pivoshenko.ai/blob/main/kasetto.yaml
Or add the source to ~/.config/kasetto/config.yaml and then run kst sync:
source: https://github.com/pivoshenko/pivoshenko.ai/blob/main/kasetto.yaml