feat: typed skills, auto-routing, zero-prompt capture, and private setup#2
feat: typed skills, auto-routing, zero-prompt capture, and private setup#2richardzhuang0412 wants to merge 1 commit intoryannli:mainfrom
Conversation
…etup Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@codex review |
|
discussed in chat with two potential changes:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5044b2c578
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 1. Search for matching notes in one Bash call: | ||
|
|
||
| ```bash | ||
| grep -rl "<keyword>" notes/ && echo "---" && ls -1 notes/ | grep -i "<keyword>" |
There was a problem hiding this comment.
Search filenames even when content grep has no hits
This command chains content and filename search with &&, so if grep -rl "<keyword>" notes/ finds no content match (exit code 1), the filename search never runs. That causes false negatives for notes where the keyword is only in the filename, which is a common /remove lookup path, especially in one-shot mode.
Useful? React with 👍 / 👎.
| echo "=== Content matches ===" && \ | ||
| grep -rl "<keyword>" notes/ ; \ | ||
| echo "=== Type matches ===" && \ | ||
| grep -l "type: <type>" notes/ |
There was a problem hiding this comment.
Make type search read note files, not the notes directory
The type-search example calls grep -l "type: <type>" notes/, but notes/ is a directory path, not a file glob or recursive target, so this emits a directory error and returns no matches. As written, type-filter queries like “my todos” cannot work from this command template.
Useful? React with 👍 / 👎.
| alias note='cd ~/opennote && claude -p' # one-shot: capture, search, quick actions | ||
| alias notei='cd ~/opennote && claude' # interactive: multi-turn conversations |
There was a problem hiding this comment.
Point shell aliases to the repository path used in quick start
Quick Start now tells users to clone into my-notes, but the suggested aliases hardcode cd ~/opennote. If someone follows the documented setup verbatim, note/notei fail immediately with a missing-directory error until they manually adjust the path.
Useful? React with 👍 / 👎.
Summary
A comprehensive workflow upgrade that reduces capture friction to zero prompts, adds typed skills for granular note-taking, and fixes the privacy problem with public forks.
Skills (
.claude/skills/)7 built-in skills that ship with the repo:
/dump/idea/todo/reflect/search/remove/devAll capture skills are optimized to batch everything into a single Bash call (write file + git add + commit + backgrounded push) to minimize latency.
Auto-Routing
Users don't need to type skill names. An intent detection table in
CLAUDE.mdroutes content automatically:"the best frameworks feel invisible"→ dump"what if we sold unused SaaS seats"→ idea with next steps"finish API docs by Friday"→ todo"what did I say about marketplaces?"→ searches notes"delete that note about flossing"→ remove (with confirmation)When ambiguous, defaults to dump — fast capture over over-categorization.
Zero Permission Prompts
.claude/settings.jsongrants repo-level permissions for standard capture operations (read, write notes, git, date, ls, WebFetch). No approval prompts during normal use.Type Taxonomy
Added
typefield to frontmatter spec:note,idea,reflection,learning,meeting,link,observation,todo. Enables filtering in explorations and search.Private Setup (no more public forks)
Forks of public repos can't be made private — a problem for a personal notes app. Changed the Quick Start from
gh repo forkto:git clone https://github.com/ryannli/opennote.git my-notes cd my-notes ./setup.shsetup.shnow auto-creates a private repo viagh repo create --private, switches origin to it, and keeps the template asupstreamfor pulling future updates.Shell Aliases & Usage Guide
README updated with:
notealias (one-shotclaude -pfor quick capture)noteialias (interactiveclaudefor multi-turn workflows)Todo Reminders
/todosupports scheduling reminders via native macOS notifications (osascriptwith heredoc). Includes terminal-mode warning when run viaclaude -p.Files Changed
.gitignore.claude/skills/and.claude/settings.json.claude/settings.json.claude/skills/*/SKILL.mdCLAUDE.mdREADME.mdsetup.shTest plan
./setup.shon a fresh clone — creates private repo, configures timezoneclaude -p "test thought"— auto-routes to dump, captures with zero promptsclaude -p "/idea test idea"— includes Potential and Next Steps sectionsclaude -p "/todo test task in 1 minute"— captures and fires macOS notificationclaude -p "/search test"— finds matching notesclaudethen/remove test— interactive deletion with confirmationclaudethen/dev— enters dev mode, stops auto-capturing🤖 Generated with Claude Code