Jiri's personal monorepo of AI-tool instructions: rules, skills, and slash commands consumed by Claude Code, Copilot CLI, Gemini CLI, Cursor, and any other agent that can read markdown.
Everything here is tool-agnostic where possible. Each AI tool picks up what it needs through its own loading mechanism (Claude Code via the sync hook, Cursor via @file references, Gemini CLI via its commands directory, etc.).
| Path | Purpose |
|---|---|
rules/ |
Always-apply rule files (type: "always_apply" frontmatter) — coding standards, restrictions, writing style |
skills/ |
Agent skills following the agentskills.io spec. Each subdir has a SKILL.md |
gemini-cli/commands/ |
.toml slash commands for Gemini CLI (description + prompt with {{args}}) |
create-prd.md, generate-tasks.md, process-task-list.md, feature-request.md |
Standalone PRD workflow prompts (the original "AI Dev Tasks" pipeline) |
CLAUDE.md / AGENTS.md |
Project instructions for AI tools. AGENTS.md is a symlink to CLAUDE.md |
changelog.md |
Manually-maintained log of notable changes |
_prds/, _tasks/, _tickets/ |
Generated outputs from the PRD workflow (gitignored) |
A SessionStart hook symlinks every skills/*/ folder into ~/.claude/skills/, so skills appear automatically inside Claude Code at every session start — no manual install step.
The canonical hook script lives in this repo at skills/setup-skills-autorefresh/scripts/sync-skills.js. It syncs whatever source folder is passed to it as an argument (and prunes symlinks for skills you've removed). Register it on a machine with the bundled setup-skills-autorefresh skill, which bakes the folder into the hook command in ~/.claude/settings.json:
bash skills/setup-skills-autorefresh/scripts/install.sh ~/instructions/skills- Copilot CLI uses a parallel script at
~/.copilot/hooks/sync-skills.jsthat copies (not symlinks, github/copilot-cli#1021) skills into~/.copilot/skills/.
The hook script is the source of truth for the sync behaviour — read it directly if you need to debug.
Three always-apply files under rules/. Each carries type: "always_apply" frontmatter so AI tools that respect that convention load them on every interaction.
rules/general.md— core principles, coding standards, testing (TDD mandatory), restrictions, file-length limits, writing style, git commit format.rules/builder.md— defaults for spinning up new applications (tech stack picks, scaffolding flow, verification protocol).rules/design.md— frontend design thinking and aesthetics guidelines (originally from the Anthropicfrontend-designplugin).
CLAUDE.md mandates rules/general.md is loaded first, before anything else.
Each skill is a directory under skills/ containing a SKILL.md with name, description, and (optional) metadata frontmatter, followed by the skill body. See the agentskills.io spec for the format. The table below lists every skill in the repo — keep it in sync when you add, remove, or rename one. Each skill name links to its SKILL.md; new rows should link the name to skills/<name>/SKILL.md the same way.
The Depends on column lists other skills in this repo that the skill invokes or requires to function (— if none). It is mandatory: every row must declare its dependencies. A skill that only points the reader to another skill ("use X instead") or is synced from an upstream repo does not "depend on" it — leave the cell —.
| Skill | What it does | Depends on |
|---|---|---|
apple-mail-query |
Query the local Apple Mail (Mail.app) SQLite DB on macOS to list, search, count, or extract emails (read-only snapshot). | — |
apple-mail-thread-export |
Export Apple Mail conversation threads from a sender into one markdown file per thread, with an incremental manifest so re-runs only write new or changed threads. | — |
better-plan |
Chained planning ritual: enhance the request via prompt-enhancer, build a plan (plan-mode rigor), stress-test it via grill-me, then cost-route tasks via op; presents the routed plan, executes on approval, and recaps the run. Slash-only. | grill-me, op, prompt-enhancer |
claude-allow-home |
Mark a folder as trusted in Claude Code (sets hasTrustDialogAccepted), skipping the interactive trust prompt. |
— |
council |
Run a question or decision through a council of 5 AI advisors that analyze, peer-review, and synthesize a verdict. | — |
create-codebase-docs |
Generate an engaging STARTHERE.md codebase guide (architecture, decisions, Mermaid diagrams) and wire up auto-update checks. |
— |
create-implementation-plan |
Generate a concise, machine-friendly implementation-plan template for engineering work. | — |
create-skill |
Guide for authoring or updating a skill — SKILL.md structure, conventions, and validation. | — |
create-svg-image |
Generate production-quality SVG images (banners, cards, OG images, badges) from a text description. | — |
deep-research |
Conduct multi-source research with synthesis, citation tracking, and claim verification. | — |
defuddle |
Extract clean markdown from web pages with the Defuddle CLI (strips clutter) to save tokens. | — |
distill-notes |
Distill raw notes into a sharp set of standalone maxims (drop 40-60% of ideas, compress to <=8 words, sharpen into antithesis/couplets); returns them in chat, then asks whether to also save to a .md file. | — |
distill-notes-v2 |
Process notes that mix facts with heuristics — organize the facts losslessly (grouped by category, deadlines flagged, every value verbatim) and distill the heuristics into sharpened maxims; returns both sections in chat, then asks whether to also save to a .md file. | — |
distill-persona |
Distill a leader's worldview from interview transcripts into a reusable advisor persona. | — |
first-principles-mode |
Strip a problem back to fundamental truths and rebuild the answer from only what's verifiable. | — |
founder-thinking-mode |
Answer in a blunt founder-operator voice — the specific decision, the trade-off, and the real risk. | — |
frontend-design |
Create distinctive, production-grade frontend UI that avoids generic AI aesthetics. | — |
generate-prd-tasks |
Turn a PRD into a step-by-step developer task list (parent tasks + sub-tasks). | — |
goal-breakdown |
Break a big finite goal into a sharp end state, ordered milestones (riskiest first), and one-day tasks with a single clear next action; re-plans as milestones complete. | — |
grill-me |
Interview the user relentlessly about a plan or design until reaching shared understanding. | — |
handoff |
Compact the current conversation into a handoff document for another agent to pick up. (synced from mattpocock/skills) |
— |
highlight-key-takeaways |
Highlight the key takeaways in an Obsidian note with ==highlight== syntax, in place. |
— |
indie-hacker-wrapup |
End-of-session ritual that mines the current session for X-worthy takeaways and drafts a build-in-public post (or declines when nothing clears the bar), remembering past angles so it never repeats one. | write-like-human |
json-canvas |
Create and edit JSON Canvas (.canvas) files — nodes, edges, groups, connections. |
— |
landing-page-copy |
Generate high-converting landing page copy in markdown from a short product description. | — |
landing-page-gap-analyzer |
Audit landing page copy against a 13-section conversion blueprint and return a scored gap report. | defuddle |
markdown |
Create, refine, or convert content into strictly formatted, export-ready Markdown. | — |
microsoft-clarity |
Add Microsoft Clarity analytics (heatmaps, session recordings) to a Next.js app. | — |
nextjs-ga-tracking |
Add GA4 tracking with GDPR-compliant Silktide cookie consent to a Next.js project. | — |
obsidian-bases |
Create and edit Obsidian Bases (.base) — views, filters, formulas, summaries. |
— |
obsidian-cli |
Interact with Obsidian vaults via the Obsidian CLI (read/create/search notes; plugin/theme dev + debug). | — |
obsidian-markdown |
Create and edit Obsidian Flavored Markdown (wikilinks, embeds, callouts, properties). | — |
obsidian-task-extractor |
Extract atomic tasks from a note and add them to To Remember.md. |
— |
op |
Route each task in a plan to the cheapest capable Claude model (Haiku/Sonnet/Opus), then execute by dispatching tasks as subagents on their assigned model. | — |
pdf |
PDF toolkit — extract text/tables, create, merge/split, and fill forms at scale. | — |
persona-levelsio |
Channel Pieter Levels (levelsio) as a solo bootstrapped indie-hacker advisor, grounded in his frameworks and build-in-public voice. | — |
persona-luca |
Channel Luca Rossi (Refactoring newsletter) as an engineering-leadership advisor, grounded in his articles and named mental models. | — |
persona-stanier |
Channel James Stanier as an engineering-leadership advisor, grounded in his blog posts and frameworks. | — |
prd-creator |
Generate detailed PRDs in Markdown via a clarifying-questions interview. | — |
prompt-enhancer |
Transform a simple prompt into a high-quality, structured one for better AI results. | — |
prototype |
Build a throwaway prototype to flesh out a design, as a runnable terminal app or several toggleable UI variations. (synced from mattpocock/skills) |
— |
qmd-project |
Turn any folder into a folder-local qmd semantic index over its nested .md files (isolated from the global index, shared models) and ship a project-local qmd-ask skill that answers questions from it. |
— |
radical-feedback |
Diagnose and improve feedback with Kim Scott's Radical Candor framework, or generate well-structured feedback for a situation. | — |
reddit-post |
Create high-engagement Reddit posts (title + body) from a guided questionnaire. | — |
rewrite |
Improve, correct, or rephrase text in its own language (DeepL Write style) with Simple/Business/Academic/Casual styles and Enthusiastic/Friendly/Confident/Diplomatic tones. Improve mode loads the write-like-human ruleset first so default output reads human. | write-like-human |
seo-keyword-generator |
Generate a categorized SEO keyword strategy for a side project via a questionnaire. | — |
setup-adrs |
Bootstrap an Architecture Decision Record (ADR) system in any project — ADR dir + template + seed ADR-0001, ARCHITECTURE.md recap, and an ADR policy injected into AGENTS.md/CLAUDE.md. |
— |
setup-aiengineering |
Bootstrap a repo's AI-engineering baseline — inject verification/git/file-org policy blocks into AGENTS.md/CLAUDE.md, delegate ADRs/changelog/user-scenarios to their setup skills, and scaffold a worktree bootstrap hook plus a detected .worktreeinclude. Stack-agnostic. |
setup-adrs, setup-changelog, setup-user-scenarios |
setup-changelog |
Bootstrap a per-session changelog system in any project (creates changelog/, adds the policy to AGENTS.md/CLAUDE.md). |
— |
setup-rtk |
Install RTK (Rust Token Killer) on a machine for a single Claude Code profile — binary (Homebrew or official install script) + the rtk hook claude PreToolUse hook in settings.json, via RTK's own rtk init. |
— |
setup-skills-autorefresh |
Install the SessionStart hook that auto-syncs skills from a chosen folder into ~/.claude/skills/. |
— |
setup-user-scenarios |
Bootstrap a BDD user-scenarios inventory (docs/user-scenarios.md) + doc-sync policy in a project. |
— |
ship-pr |
Manual /ship-pr only — go from a dirty working tree to an open PR/MR (self-assigned to you) in one pass. |
— |
ship-v1 |
Ship the smallest live version of a side project in one weekend, post it, then let real signal decide whether to continue, pivot, or drop. An anti-roadmap protocol for unvalidated, zero-user products. | — |
summarise-text |
Summarise pasted text, a local file, or an Obsidian note into main idea, takeaways, and an action plan. | — |
summarise-url |
Fetch a link's content and return a structured summary. | — |
sync-mattpocock-skills |
Sync a curated subset of skills from the mattpocock/skills GitHub repo, flattening its category dirs into the top-level skills/ folder. |
— |
sync-obsidian-skills |
Sync the Obsidian-related skills from the kepano/obsidian-skills GitHub repo. |
— |
team-code-writer |
Writer role for an agent dev team — implements features matching existing style and summarizes with file:line refs. Writes code only, no tests and no self-review. | — |
team-reviewer |
Reviewer role for an agent dev team — read-only, runs git diff and reports Critical/Important/Nitpick findings with file:line, never edits. |
— |
team-ship |
Lead orchestrator — /team-ship <task> records the agent territories in the project's AGENTS.md/CLAUDE.md, writes a brief, dispatches the writer and tester in parallel then the reviewer on the diff, and collects one summary that produces a PR you approve. |
team-code-writer, team-tester, team-reviewer |
team-tester |
Tester role for an agent dev team — writes tests from the spec, blind to the implementation, covering every branch, edge case, and error path. | — |
translate-to-czech |
Translate English text to Czech while preserving accuracy. | — |
write-like-human |
Apply a strict 17-rule style guide so prose reads as human, not AI-generated. | — |
(Inside Claude Code you may also see skills loaded from other sources; this table covers the skills defined in this repo — ls skills/.)
The four team-* skills (an agent dev team — a writer, a reviewer, a tester, and a team-ship lead that runs them) are adapted from @zodchiii's post on X.
TOML slash commands under gemini-cli/commands/. Format:
description = "One-line description shown in /help"
prompt = """
Your prompt body. Use {{args}} where the user's input should be interpolated.
"""Current commands: create-prd, feature-request, generate-changelog, process-task-list, summarise.
Gemini CLI reads from its own config path — symlink or copy this directory there to wire them up.
The original PRD → tasks → process pipeline this repo started as. Still usable as standalone prompts when you want a structured feature-development flow with manual review gates.
create-prd.md— interview-driven PRD generation. Output:_prds/prd-[feature-name].md.generate-tasks.md— break the PRD into parent tasks, then sub-tasks (with a confirmation gate between them). Output:_tasks/tasks-[name].md.process-task-list.md— instructs the AI to work one sub-task at a time, waiting for approval, running tests, committing per parent task.feature-request.md— alternative entry point: skip the PRD and go straight from a feature request to a task list.
Usage in Claude Code / Cursor: reference the file with @create-prd.md (or your tool's equivalent) and let it drive.
Video demo of the original workflow on Claire Vo's "How I AI" podcast.
Personal repo, but PRs welcome if something here is genuinely useful elsewhere. To add:
- A skill: create
skills/<name>/SKILL.mdfollowing the agentskills.io spec. It will be picked up by the sync hook on next session start. Add a matching row to the Skills table above, linking the name toskills/<name>/SKILL.md, and fill theDepends oncell — list every other repo skill this one invokes or requires, or—if it is self-contained. - A rule: add
rules/<name>.mdwithtype: "always_apply"frontmatter. - A Gemini command: add
gemini-cli/commands/<name>.toml. Add it to the Current commands list above.
Universality requirement: anything added here must be reusable by any reader — no personal data, secrets, employer names, internal URLs, or hardcoded identities. Full policy: rules/universality.md. After cloning, activate the pre-commit scanner once: bash scripts/install-hooks.sh.
Log notable changes in changelog.md using the existing YYYYMMDDTHHMM — Title format.