Captures ideas as timestamped Markdown notes in .planning/notes or ~/.claude/notes. Append text, list notes, promote indexed note to todo via /note.
From pbrnpx claudepluginhub sienklogic/plan-build-run --plugin pbrThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agentic engineering workflows: eval-first loops, 15-min task decomposition, model routing (Haiku/Sonnet/Opus), AI code reviews, and cost tracking.
STOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.
Before ANY tool calls, display this banner:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► NOTE ║
╚══════════════════════════════════════════════════════════════╝
Then proceed to Step 1.
You are running the note skill. Your job is zero-friction idea capture. One Write call, one confirmation line. No questions, no prompts.
This skill runs inline — no Task, no AskUserQuestion, no Bash.
Notes are stored as individual markdown files in a notes directory:
.planning/notes/{YYYY-MM-DD}-{slug}.md — used when .planning/ directory exists in cwd~/.claude/notes/{YYYY-MM-DD}-{slug}.md — used as fallback when no .planning/, or when --global flag is presentEach note file has this format:
---
date: "YYYY-MM-DD HH:mm"
promoted: false
---
{note text verbatim}
--global flag: Strip --global from anywhere in $ARGUMENTS before parsing. When present, force global scope regardless of whether .planning/ exists.
Important: Do NOT create .planning/ if it doesn't exist. If there's no .planning/ directory, fall back to global scope silently.
Parse $ARGUMENTS after stripping --global:
| Condition | Subcommand |
|---|---|
Arguments are exactly list (case-insensitive) | list |
Arguments are exactly promote <N> where N is a number | promote |
| Arguments are empty (no text at all) | list |
| Anything else | append (the text IS the note) |
Critical: list is only a subcommand when it's the ENTIRE argument. /pbr:note list of groceries saves a note with text "list of groceries". Same for promote — only a subcommand when followed by exactly one number.
Create a timestamped note file in the target directory.
.planning/notes/ or ~/.claude/notes/){YYYY-MM-DD}-{slug}.md
-2, -3, etc.Noted ({scope}): {note text}
{scope} is "project" or "global"YYYY-MM-DD HH:mm (24-hour, no seconds)Show notes from both project and global scopes.
.planning/notes/*.md (if directory exists) — these are "project" notes~/.claude/notes/*.md (if directory exists) — these are "global" notesdate and promoted statuspromoted: true from active counts (but still show them, dimmed)Notes:
Project (.planning/notes/):
1. [2026-02-08 14:32] refactor the hook system to support async validators
2. [promoted] [2026-02-08 14:40] add rate limiting to the API endpoints
3. [2026-02-08 15:10] consider adding a --dry-run flag to build
Global (~/.claude/notes/):
4. [2026-02-08 10:00] cross-project idea about shared config
{count} active note(s). Use `/pbr:note promote <N>` to convert to a todo.
If a scope has no directory or no entries, show: (no notes)
Convert a note into a todo file.
.planning/ directory — if it doesn't exist, warn: "Todos require a Plan-Build-Run project. Run /pbr:begin to initialize one, or use /pbr:todo add in an existing project.".planning/todos/pending/ directory exists{NNN}-{slug} where NNN is the next sequential number (scan both .planning/todos/pending/ and .planning/todos/done/ for the highest existing number, increment by 1, zero-pad to 3 digits) and slug is the first ~4 meaningful words of the note text, lowercase, hyphen-separated.planning/todos/pending/{id}.md:---
title: "{note text}"
status: pending
priority: P2
source: "promoted from /pbr:note"
created: {YYYY-MM-DD}
theme: general
---
## Goal
{note text}
## Context
Promoted from quick note captured on {original date}.
## Acceptance Criteria
- [ ] {primary criterion derived from note text}
promoted: truePromoted note {N} to todo {id}: {note text}/pbr:note list of things → saves note "list of things" (subcommand only when list is the entire arg).planning/: Falls back to global ~/.claude/notes/ — works in any directory.planning/, suggests /pbr:beginlist shows last 10 when >20 active entries-2, -3 etc. to filename if slug already used on same date--global position: Stripped from anywhere — --global my idea and my idea --global both save "my idea" globallylist subcommandIf the Write tool fails (permissions, disk full, etc.), display:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
Failed to write note to {target_file}.
**To fix:** Check file permissions or disk space.
If the specified note index is invalid, display:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
Note {N} not found. Valid range: 1-{max}.
**To fix:** Run `/pbr:note list` to see available notes.
.planning/ if it doesn't exist — fall back to global