Cascading Goal Tracker
ballred/obsidian-claude-pkm
Tracks three-year, yearly, monthly, and weekly goals in linked Markdown files, calculating completion percentages and flagging stalled goals.
First-time setup for the Chief of Staff system. An agent skill from jdpolasky/ai-chief-of-staff.
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jdpolasky/ai-chief-of-staff setup --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/setup .claude/skills/setup && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .claude/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setupType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jdpolasky/ai-chief-of-staff setup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/setup .agents/skills/setup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .agents/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jdpolasky/ai-chief-of-staff setup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/setup .cursor/skills/setup && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .cursor/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jdpolasky/ai-chief-of-staff.git --path .claude/skills/setup--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jdpolasky/ai-chief-of-staff setup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/setup .gemini/skills/setup && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .gemini/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jdpolasky/ai-chief-of-staff setupInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/setup .github/skills/setup && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .github/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jdpolasky/ai-chief-of-staff --skill setup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jdpolasky/ai-chief-of-staff setup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jdpolasky/ai-chief-of-staff.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/setup .opencode/skills/setup && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "setup" agent skill from https://github.com/jdpolasky/ai-chief-of-staff/tree/main/.claude/skills/setup into .opencode/skills/setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
setupFirst-time setup for the Chief of Staff system. An agent skill from jdpolasky/ai-chief-of-staff.
Setup is an agent skill from jdpolasky/ai-chief-of-staff. First-time setup for the Chief of Staff system. Conversational, skippable, produces a working vault in about ten minutes.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Knowledge Management. It works with Obsidian. The repository describes itself as: The original AI Chief of Staff built on Claude Code and Obsidian. ADHD prosthetic, open to anyone. Superseded by chief-of-staff-2. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 832b784. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Setup loads about 3.5k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 2,214 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jdpolasky/ai-chief-of-staff at commit 832b784, republished under its MIT licence (© jdpolasky). 2,214 words, ~3,458 tokens.
.claude/skills/setup/SKILL.md (or your agent's skills folder).You are setting up a fresh Chief of Staff system for someone who just cloned this repo and pointed Claude at it. This is their first session with the system. Most of them have never run a skill like this before and do not know what to expect.
Your job: build a working vault with minimum friction, then deliver the first briefing so they see the system work before they close the tab.
Three rules that prevent the most common failure modes.
Read every file before you overwrite it. Claude Code's Write tool requires a prior Read on existing files. The template ships with stub files. Read each one before replacing it. This applies to CLAUDE.md, every file in .claude/memory/, and every vault-template file you copy.
Never seed the To-Do without confirmation. If concrete tasks or waiting-for items came up during the conversation, surface them explicitly: "You mentioned X. Want me to add that to the Waiting For table / Do Now quadrant?" Only add after they say yes. Their To-Do is their list. Do not pre-populate on their behalf.
Conditional content gets appended, not uncommented. The templates are clean: no hidden instructions in HTML comments. When setup instructions say "add a principle" or "add a preference," append a new line or paragraph in the right section. Don't go looking for placeholder blocks to toggle on.
Open with something close to this, in your own voice:
"I'm going to build your Chief of Staff system. Four questions to get it working, then optional sections that make it stronger over time. Skip anything you want. You can always come back.
First: where is your Obsidian vault? Give me the full path, like
C:\Users\You\Documents\MyVaulton Windows or/Users/You/Documents/MyVaulton Mac. If you don't have one yet, tell me where you'd like it and I'll create the folder."
Once you have a path, do this in order:
Expand any ~ to the user's home directory before passing the path to any tool. Claude Code's Write tool does NOT auto-expand ~. On Windows, ~ should expand to C:\Users\<username>. On Mac/Linux, /Users/<username> or /home/<username>. If you can't determine the home directory reliably, ask the user for the full path with no ~.
Check the parent directory exists. If not, tell the user the path looks wrong and ask them to confirm or correct. Don't try to create deep paths from scratch — the user might have typoed.
Try a test write. Write a file called .cos-setup-test containing test to the vault path. If the write fails, surface the error and stop. Don't continue populating the vault if you can't write to it. If the write succeeds, delete the test file before continuing.
Check for an existing install. If Command Center.md already exists at the vault root, this is a re-run. Stop and ask: "Looks like the system is already set up at this vault. Re-running setup will overwrite your existing files. Are you sure? (yes/no)" Do not proceed without an explicit yes.
Save the vault path. Everything that belongs in the vault gets written there. The .claude/ folder stays in the project root where this setup is running.
If they don't have Obsidian installed yet, point them at the Obsidian setup guide and offer to pause while they set it up. Do not try to install Obsidian for them.
Tell them: "These four questions get the system usable. Everything after is optional."
CLAUDE.md to address the user. If skipped, ask once more: "I just need a name to address you by. Can be a nickname, doesn't have to be your legal name." If they refuse a second time, use "friend" as the placeholder and continue.[, ], |, or backticks, sanitize before writing it into a markdown heading. Replace each problematic character with a space and collapse whitespace. Don't ask the user about this — just do it.After these four, you have enough to write a working system. Pause and ask:
"That's enough to get you working. I can build the vault now and run your first briefing, or we can keep going through the deeper sections that make the system sharper over time. Want to ship it or keep going?"
If they say ship it: jump to File generation. If they say keep going: continue to Step 2.
Tell them: "Most productivity tools ignore why people get stuck. This one doesn't. Skip anything you want."
Tell them: "Your fight record is ammunition for the days your brain tells you that you can't. I'll reference these occasionally to remind you who you are."
Do this quietly. A single line like "Building your system now." is enough before you start. Do not narrate each write.
Process: for each file below, Read it first (it exists as a stub), then Write the replacement content.
CLAUDE.mdRead CLAUDE.md at the project root, then write a replacement with these substitutions:
[Your Name] becomes their first name.[A few sentences about who you are...] placeholder becomes a short paragraph built from Step 1 and (if answered) Step 2. A few sentences, factual. Their voice if you have it.[full path...] line becomes the path they gave you.Conditional additions:
7. **Cash lane dominates briefings until the pressure eases.**Copy the templates from vault-template/ and fill them in. These files don't exist yet in the target vault, so no pre-read required.
Command Center.md at the vault root:
**Last updated:** line near the top to today's date (YYYY-MM-DD).[Lane 1], [Lane 2], [Lane 3] headings with the lane names from Step 1 Q3. Add or remove lane blocks to match the count they gave. Use the sanitized lane names if any contained special characters.[Current status — fill in at your next /wrap.] so they know where to write. If they described a lane in passing during the conversation, use that sentence instead.[fill in at next /wrap].To-Do.md at the vault root: copy the template as-is. Do not prefill any quadrants. If concrete to-dos or waiting-for items came up during the conversation, ask explicitly before adding them. Example: "You mentioned you're waiting on Rowan for a project brief and you owe David a Q2 invoice. Want me to add both to the Waiting For table?"
_system/ folder at the vault root. Copy these from vault-template/_system/ and seed initial values:
last_session.md — set frontmatter date: to today, session: to 0. Body: a short paragraph saying "Setup session. System initialized. Run /start to begin the loop." and an open-threads list with "First real session pending."hot.md — set the body paragraph to "Setup just completed. No in-progress work yet. Next session will be the first real run."Session Log.md — leave as-is. /wrap appends entries here starting with session 1.memory_firings.log — leave as-is. /wrap appends here when memories fire.Read each file in .claude/memory/ before writing. They exist as empty stubs.
user_profile.md — replace with a few short paragraphs. Who they are (Step 1 Q1, Q2), how they work (Step 2 Q8 if answered), their fight record (Step 4 if answered). Factual. Short.
preferences.md — replace with their communication preferences from Step 2 Q6 and Q7 if answered. One line per preference. If non-coder, include that. If they answered Step 3 Q12 (what doesn't motivate), include those as a short list. If they skipped both Step 2 and Step 3 entirely (no preference data at all), leave the existing stub prose untouched. It already reads as friendly placeholder text.
projects.md — replace with one short paragraph per lane from Step 1 Q3. Lane name, what's happening in it (or a placeholder if they didn't describe), top priority from Step 1 Q4 attached to whichever lane it belongs to. If they answered Step 5, add a short "People" section at the bottom.
session_context.md — replace with one or two lines: [today's date] — Setup session. Completed sections: [list]. Skipped: [list].
MEMORY.md — the index is already correct. No changes needed.
Read the Command Center.md and To-Do.md you just wrote. Deliver a proper Must / Should / Could briefing per CLAUDE.md. The state is thin because they just built it. That's fine.
If the Waiting For table has entries, flag any that are upcoming (not overdue; nothing is overdue on day one).
Name the lanes they created. Acknowledge that the system is thin today and will thicken as they use it.
End with: "What do you want to work on?"
Do not tell them to run /start. The first briefing happens inside /setup so they see the loop work.
Close with something close to this, in your own voice:
"Your system is live. Three commands carry the daily loop:
/start(morning briefing),/sync(optional mid-session save),/wrap(end of session). The memory layer in.claude/memory/grows every time you correct me on something. Tell me 'save that as a feedback memory' and I'll write it down. A month from now the system will feel like it knows you. Today it's a skeleton. That's expected."
Nothing more. The system works from here.
© jdpolasky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/setup of jdpolasky/ai-chief-of-staff.
Open the folder on GitHubat commit 832b784
Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Setup this skilljdpolasky/ai-chief-of-staff | 104 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Cascading Goal Trackerballred/obsidian-claude-pkm | 1.9k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Auditpricklywiggles/niamos | 192 | — | ~1.4k | Automated safety check: Pass | None | |
| Dbrain Processorsmixs/agent-second-brain | 392 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Brainpoteto/brainmaxxing | 320 | — | ~635 | Automated safety check: Pass | MIT | |
| Obsidian Project Memorybrycewang-stanford/Auto-Empirical-Research-Skills | 4.5k | — | ~2.4k | Automated safety check: Pass | Custom licence |
ballred/obsidian-claude-pkm
Tracks three-year, yearly, monthly, and weekly goals in linked Markdown files, calculating completion percentages and flagging stalled goals.
pricklywiggles/niamos
Scan this Obsidian vault for content that's drifted from the conventions in CLAUDE.md (status↔folder drift, missing required fields, naming violations, stale active items, frontmatter health issues…
smixs/agent-second-brain
Personal assistant for processing daily voice/text entries from Telegram.
poteto/brainmaxxing
Read/write brain files (Obsidian vault at brain/). An agent skill from poteto/brainmaxxing.
brycewang-stanford/Auto-Empirical-Research-Skills
This skill should be used when the user asks to maintain an Obsidian knowledge base for a research project, import an existing research repository into Obsidian, keep project memory or daily notes…
Ootto-AI/claude-content-skills
Give Claude a permanent, searchable long-term memory using an Obsidian vault as the store.
jdpolasky/ai-chief-of-staff
Personal Chief of Staff system for ADHD-ish operators. An agent skill from jdpolasky/ai-chief-of-staff.
jdpolasky/ai-chief-of-staff
End of session. An agent skill from jdpolasky/ai-chief-of-staff.
jdpolasky/ai-chief-of-staff
Periodic integrity check. An agent skill from jdpolasky/ai-chief-of-staff.
jdpolasky/ai-chief-of-staff
Morning briefing. An agent skill from jdpolasky/ai-chief-of-staff.
jdpolasky/ai-chief-of-staff
Mid-session checkpoint. An agent skill from jdpolasky/ai-chief-of-staff.
Works with
First-time setup for the Chief of Staff system. An agent skill from jdpolasky/ai-chief-of-staff. Setup is an agent skill from jdpolasky/ai-chief-of-staff. First-time setup for the Chief of Staff system.
Setup fits situations like: knowledge Management work in your project.
Run `npx skills add jdpolasky/ai-chief-of-staff --skill setup -a claude-code`. Or copy the skill folder (.claude/skills/setup in jdpolasky/ai-chief-of-staff) into .claude/skills/setup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jdpolasky/ai-chief-of-staff --skill setup -a codex`. Or copy the skill folder (.claude/skills/setup in jdpolasky/ai-chief-of-staff) into .agents/skills/setup in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jdpolasky/ai-chief-of-staff --skill setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setup, .gemini/skills/setup, .github/skills/setup and .opencode/skills/setup in your project.
SKILL.md names no scripts, command-line tools or credentials: Setup is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Setup: Cascading Goal Tracker (ballred/obsidian-claude-pkm, 1.9k stars), Audit (pricklywiggles/niamos, 192 stars), Dbrain Processor (smixs/agent-second-brain, 392 stars) and Brain (poteto/brainmaxxing, 320 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jdpolasky (a GitHub user) maintains it in jdpolasky/ai-chief-of-staff, which has 104 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 2, 2026.
Source: jdpolasky/ai-chief-of-staff on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.