一键导入
project-setup
Scaffold a vault project folder and link the current repo via .vault.config.json. Use on /project-setup or "set up a new project".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Scaffold a vault project folder and link the current repo via .vault.config.json. Use on /project-setup or "set up a new project".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Summarize the current diff per file as markdown: a `## <filepath>` heading per changed file followed by a prose summary of its changes. Triggers: /changes, "summarize the diff", "what changed per file", "per-file summary of changes", "суммаризируй дифф", "что изменилось по файлам". Skip for reviewing quality or bugs (use /code-review) and for raw diff output (plain `git diff`).
Compress an expository note into readable prose backed by a certified Glossary via a standalone CLI — abstractive idea-compression, not extractive trimming. Re-expresses the note as flowing prose (carrying the thesis and the relations among terms) above an optional `## Workflow` checklist of the note's actionable directives and a definitions-only `## Glossary` table, collapsing restatements to one entry each and keeping only operational tokens verbatim; a different model fidelity-grades the glossary definitions and the workflow steps against the source and surfaces anything that did not translate. Replaces /cut. Use on /distill, "distill this", "compress this note", "make a glossary of this note", "tighten this into its ideas", "summarize as a glossary", "compress this guide/procedure into steps", "this note is too long/verbose", «дистиллируй», «сократи в глоссарий», «выжимка», «сделай глоссарий», «сократи гайд в шаги»; route whole-repo glossary maintenance to /glossary.
Route the current context to one expert persona and return that lens's candid second opinion. Auto-classifies to the best-fit persona, or name one explicitly. Runs the persona as a spawned subagent so its reasoning stays out of the main context. Roster spans engineering, product, go-to-market, and craft. Out of scope: generating new designs (use /design), arguing both sides (use /debate), stress-testing one plan (use /probe), scoring confidence in a claim (use /grade). Invoke explicitly with /opinion.
Personal knowledge management in an Obsidian vault. Use whenever the user wants to save, find, review, or organize knowledge, even without saying "vault". Triggers: saving links/articles as references, distilling concepts into cards, writing original notes, searching or quizzing saved content, listing active projects ("what am I working on"), explicit /vault commands, weekly-log operations (backlog/бэклог, planning, completing tasks, sleep). Excludes direct file edits not routed through /vault (editing a .md file in a code repo that is not a vault artifact), Obsidian app features (kanban, canvas, plugins, .base), web search. Skip for session save/resume ("wrapping up", "where did we leave off") — use /track.
Orchestrate a multi-step task by delegating to fresh subagents, keeping the orchestrator session small. Triggers: /work <task>, "orchestrate this", "delegate this work". Skip one-shot questions, single-file edits, and the ambient "let's work on X" / "start working on X" phrasing.
Test an existing thing's behavior against a falsifiable claim and capture the result as a standalone Markdown record in the current working directory. Self-contained — no vault, no external templates, no project linking. Triggers: /experiment, "run an experiment", "test this claim", "verify whether", "does X actually", "check if X works", "is X true", "falsifiable claim".
| name | project-setup |
| description | Scaffold a vault project folder and link the current repo via .vault.config.json. Use on /project-setup or "set up a new project". |
Writes .vault.config.json in the current repo, and creates the vault project folder if it doesn't exist yet.
// Discover vault root
config = Read($HOME/.config/vault/config.json)
if not config:
vault_root = AskUserQuestion("Vault root absolute path?")
projects_path = AskUserQuestion("Projects subpath within vault? (e.g. '41 projects')")
Write($HOME/.config/vault/config.json, {vault_root, projects_path})
else:
vault_root = config.vault_root
// Locate project
path = AskUserQuestion("Vault path? (e.g. '41 projects/my-project')")
target = "<vault_root>/<path>"
// Wire-only branch: project already exists
if <target> directory exists:
if not Read(<target>/context.md):
Write(<target>/context.md, do("fill context.md template — see Reference"))
Write(<repo>/.vault.config.json, {vault_root, project_path: target})
gitignore = Read(<repo>/.gitignore)
if ".vault.config.json" not in gitignore: do("append it")
do("report repo wired to existing project"), stop
// Create branch: new project
title = AskUserQuestion("Project title? (human-readable)")
description = AskUserQuestion("Description? (1-2 sentences)")
result = AskUserQuestion("Result? (one sentence — what 'done' looks like)")
Bash(mkdir -p <target>)
template = Read(<vault_root>/templates/Project.md)
if template:
Write(<target>/<title>.md, do("fill template: status=in progress, result, replace <path> and description placeholders"))
else:
Write(<target>/<title>.md, do("write minimal project note: frontmatter with status=in progress; body with description and result fields"))
do("report that <vault_root>/templates/Project.md was not found; note was created from defaults")
Write(<target>/context.md, do("fill context.md template — see Reference"))
Write(<repo>/.vault.config.json, {vault_root, project_path: target})
gitignore = Read(<repo>/.gitignore)
if ".vault.config.json" not in gitignore: do("append it")
do("report created files")
$HOME/.config/vault/config.json. Schema: ~/.claude/skills/vault/schemas/root.config.schema.json.
{
"vault_root": "<absolute path>",
"projects_path": "<vault-relative subpath>"
}
projects_path is used by vault-query for project resolution; this skill only stores it.
<repo>/.vault.config.json. Schema: ~/.claude/skills/vault/schemas/project.config.schema.json.
{
"vault_root": "<absolute path>",
"project_path": "<absolute path to project folder>"
}
Both values are absolute. project_path is vault_root joined with the vault-relative path. Gitignored because it contains absolute paths.
Path: <vault_root>/<path>/<Title>.md. Template: <vault_root>/templates/Project.md.
Substitutions: <path> placeholders in body, description comment, result and status: in progress in frontmatter.
Substitute <path>, <title>, <description>, <result>.
---
# stakeholders: read by the `brief` skill. One entry per person; brief writes only each
# `last_drafted`. Everything else is yours. Delete the block if unused. Repo paths are NOT
# stored here — they differ per device; brief reads the git repo containing cwd.
# stakeholders:
# - name: Sarah
# role: PM # optional; no brief logic branches on it
# currency: [features, dates] # units they count in; brief translates work into these
# model: thinks the migration is nearly done # their current belief about the state
# inspects: [] # what they close themselves (e.g. [PRs]); [] = waits to be told
# last_drafted: # YYYY-MM-DD, written by brief on an accepted draft
---
# <title> Context
<description>
- Project note: [[<path>/<title>]]
## Result
<result>
## Tech stack
<!-- filled by user or Claude during setup -->
## Conventions
<!-- project-specific conventions -->
/track.