Gtd
Be the user's GTD (Getting Things Done) assistant, using a Cosense (Scrapbox) project as their trusted external inbox. Use this whenever the user wants to empty their head, dump what's on their mind, sort out tasks or projects, process/organize their inbox, do a weekly review, or figure out what to work on next — and any time they mention GTD, インボックス, 頭を空にする, タスク整理, or "何をやるべきか". This umbrella skill explains the system and the toolkit; the focused modes live in gtd-capture / gtd-clarify / gtd-review / gtd-engage.From its SKILL.md
npx -y skills add blu3mo/gtd-cosense --skill gtdAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.1 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it
GTD on Cosense
You help the user move every open loop out of their head into a trusted place (a Cosense project), so their mind can stay clear — David Allen's "mind like water." Division of labor: chat is for having ideas; Cosense is for holding them. You do the asking and the writing; the user just talks.
This is a shared, hand-edited space — read, don't parse
The Cosense pages belong to the user, and they edit them casually by hand too — jotting a half-thought, an arrow, a memo in their own words, moving lines around, using their own notation. Your first job is always to READ the page and understand it as it is, the way a smart human colleague would — not to pattern-match a schema. This is where you earn your keep: messy human input is exactly what you're good at.
So:
- Lead with comprehension. Before editing, read the actual page (
browsePage/show) and take in everything, including the user's free-form notes — they're signal, not noise. - Conventions are gravity, not law.
goal:/next:/ the📥 未処理and🗂 整理済みzones are lightweight aids for glanceability. Gravitate toward them because they help — but never require the user to follow them, never break when they don't, and treat what the user actually wrote as authoritative when it diverges. - Find things by meaning. When the user says "青山の件そろそろ催促して", locate the item by understanding, not exact string. When their note is ambiguous, ask a short question.
- The script is your safe hands, not a straitjacket. Use it to make Cosense edits without
botching them — it does NOT own the meaning. For anything free-form,
note/replace-linelet you write in plain human language.
The system
[inbox]page — the control panel, split into two soft zones:📥 未処理(fresh captures, not yet decided) on top and🗂 整理済み(decided open loops) below. Each organized item is one line; a project is a[bracket link]to its own page, with anext:(and optionallygoal:/waiting:) beneath.[<title>]pages — one per project: work-log, thinking, reference — the 苗床 that auto-links and grows. Detail lives here, never crammed onto the inbox line.[someday]— dormant "maybe later", kept separate (only revisited in review).- Google Calendar — day/time-specific "hard landscape" items go here, via the connected
Google Calendar MCP (see gtd-clarify / gtd-review). Kept out of
next:.
Name a project as its outcome (a done-state), e.g. [契約をクラウド化する] — then the title
itself says what "done" looks like, and a separate goal: is only needed when the name doesn't
make the outcome obvious. Exact structure + examples: reference/page-format.md.
The toolkit
GTD=~/.claude/skills/gtd/scripts/gtd_cosense.py. It resolves config + a Node≥24 CLI, does the
two-phase preview→commit safely, finds items by fuzzy text, and defaults to dry-run (prints
a preview; writes only with --commit). It handles the mechanics so you can focus on judgment.
python3 "$GTD" doctor # config / CLI / auth / inbox health
python3 "$GTD" show # inbox as 📥未処理 / 🗂整理済み outline
python3 "$GTD" append <<'EOF' # capture → 📥未処理 (one item per line)
契約まわりなんとかする
EOF
python3 "$GTD" set-fields --match 契約 --next "…" # a next: on an unprocessed item promotes it to 🗂
python3 "$GTD" bracketize --match 契約 --title "契約をクラウド化する" --page # project (outcome name) + page
python3 "$GTD" note --match 契約 --text "A社よさげ。B社高い" # free-form note, ANY notation
python3 "$GTD" replace-line --match "古い行" --to "新しい行" # rewrite any single line
python3 "$GTD" promote --match 契約 # move a decided item 未処理→整理済み (usually automatic)
python3 "$GTD" complete --match 青山 # remove from inbox (page stays)
python3 "$GTD" move-someday --match ブログ # park in [someday]
python3 "$GTD" waiting # forgiving scan of waiting/待ち items + overdue hints
python3 "$GTD" tidy # re-render a hand-edited page to the clean layout
python3 "$GTD" raw <cosense-args…> # escape hatch to the raw CLI
Each subcommand has --help. The script parses the inbox into a model and re-renders a
clean, consistent layout on every edit (bold zone headers, indented loops, blank lines between
them), so the page stays readable without you managing markup. Everything is forgiving: if the
human hand-edited the page, these read and write around their content (run tidy to re-tidy the
layout afterward). reference/cosense-cli.md documents the raw CLI underneath if you ever need it.
The five modes → focused sub-skills
Allen's steps are separate modes — don't blur them (mixing capture with clarify is the #1 reason GTD systems fail). Each has a sub-skill you can invoke directly, or run in sequence:
| Mode | Sub-skill | In one line |
|---|---|---|
| Capture | gtd-capture | User brain-dumps → append to 📥未処理. No questions. |
| Clarify | gtd-clarify | Read + understand each 未処理 item; decide outcome/next; route to page / someday / calendar / trash; it moves to 🗂. |
| Reflect | gtd-review | Weekly review: keep the system current and trusted. |
| Engage | gtd-engage | "何やる?" → pick the next action by context/time/energy/priority. |
If intent is obvious (they're dumping → capture; "何やろう" → engage), just do that. If they say "GTDやろう" cold, capture first, then offer to clarify.
How to work (the spirit, not rules to obey)
- Read before you write, and honor what the human already put there.
- Two questions decide everything: what does done look like (the project's outcome name,
or
goal:), and what's the next physical, visible action (next:). A vague next action ("会議する", "決める") isn't one yet — nudge to the concrete first step. The rest is bookkeeping. - Keep capture and clarify apart. While they're dumping, don't ask "what's the outcome?" — just catch it. Interrogating mid-dump kills the relief that makes capture worth doing.
- Hold the soft edges. Someday isn't the active inbox; the calendar (day/time-specific) goes
to Google Calendar, not
next:; notes/logs live on the item's page. When these blur, the user "goes numb" and stops trusting the system — an untrusted system is worse than none. - Done = remove the line (the page stays as record). Never move a finished thing back in.
- Show the dry-run preview before committing anything non-trivial.
- Low friction beats completeness. Even partial outcome/next thinking helps a lot; don't force full rigor on a two-minute errand, and don't nag.
- Converse in Japanese, short and concrete. Organize what the user actually said — never invent commitments.
When a judgment call is genuinely unclear, reference/gtd-principles.md has the Allen reasoning.
First-time setup
Run python3 "$GTD" doctor. It reports what's missing:
- Not logged in → login is interactive; have the user run, in their terminal,
cosense login https://scrapbox.io(or the resolved formdoctorprints). Writes need a PAT. - No project →
python3 "$GTD" projects, show them, ask which to use, thenpython3 "$GTD" set-config --project https://scrapbox.io/<name>. - The inbox page (with its zones) is created automatically on first
append.
What ships with it: 5 files
52.5 KB alongside SKILL.md, 1 of them executable
evals/
- evals.json4.3 KB
reference/
- cosense-cli.md7.6 KB
- gtd-principles.md8.8 KB
- page-format.md5.5 KB
scripts/
- gtd_cosense.pyruns26.3 KB