{"id":48528578,"url":"https://github.com/technicalpickles/sb","last_synced_at":"2026-04-07T23:04:15.674Z","repository":{"id":343103236,"uuid":"1157987040","full_name":"technicalpickles/sb","owner":"technicalpickles","description":"Second Brain CLI for Obsidian vault management","archived":false,"fork":false,"pushed_at":"2026-03-25T18:02:24.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-26T18:56:39.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technicalpickles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-14T16:09:40.000Z","updated_at":"2026-03-25T18:02:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/technicalpickles/sb","commit_stats":null,"previous_names":["technicalpickles/sb"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/technicalpickles/sb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fsb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fsb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fsb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fsb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technicalpickles","download_url":"https://codeload.github.com/technicalpickles/sb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalpickles%2Fsb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31530647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-07T23:04:14.759Z","updated_at":"2026-04-07T23:04:15.668Z","avatar_url":"https://github.com/technicalpickles.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sb\n\nCLI for Obsidian vault management. Designed for both humans and AI agents.\n\n`sb` handles the data (vault structure, note analysis, config) and executes actions (create, move, append). Agents make decisions (routing, organizing) using what `sb` gives them.\n\n## Install\n\nRequires Node.js 20+.\n\n```bash\nnpm install -g sb\n```\n\nOr run directly:\n\n```bash\nnpx sb --help\n```\n\n## Quick Start\n\n```bash\n# Point sb at your Obsidian vault\nsb init --name primary --path ~/Vaults/my-vault --scaffold\n\n# Create a note\nsb note create --title \"My insight\" --content \"Something worth remembering\"\n\n# List inbox\nsb inbox list\n\n# Check what a command would do before running it\nsb note create --title \"Test\" --content \"Preview\" --dry-run\n```\n\n## Configuration\n\nsb reads its config from `~/.claude/second-brain.md`:\n\n```markdown\n# Second Brain Configuration\n\n## Vaults\n\n- primary: ~/Vaults/my-vault\n- work: ~/Vaults/work-notes\n\nDefault: primary\n```\n\nEach vault entry is `- name: path`, and `Default:` tells sb which vault to use when you don't specify one. Run `sb init` to set this up interactively.\n\n## Commands\n\nThe `--vault \u003cname\u003e` flag is optional on most commands. If you skip it, sb uses your configured default.\n\n### Config\n\n```bash\nsb config show              # Print raw config file\nsb config vaults            # List vaults as JSON\nsb config default           # Show default vault name\nsb config qmd-collection    # Show semantic search collection name\n```\n\n### Vault\n\n```bash\nsb vault info               # Vault name and path\nsb vault obsidian           # Parse .obsidian/ settings as JSON\nsb vault structure          # Discover PARA folder structure\n```\n\n### Note\n\n```bash\nsb note create --title \"My insight\" --content \"Worth remembering\"\nsb note create --title \"From code\" --content \"...\" --source auto    # Auto-detect git context\nsb note read --note \"Resources/Tools/202601150930 redis-guide.md\"   # Structured JSON parse\nsb note context --note \"📫 Inbox/202602141147 my-insight.md\"        # Full routing context\nsb note move --from \"📫 Inbox/202602141147 my-insight.md\" --to \"Resources/Tools/\"\n```\n\nNotes use Zettelkasten naming (`YYYYMMDDHHmm slug.md`) and land in your vault's inbox folder.\n\n`note context` is the key command for agent routing. It returns extracted keywords, PARA destinations, and related notes per destination.\n\n### Daily\n\n```bash\nsb daily path                                         # Today's daily note path\nsb daily append --section \"## Links\" --content \"...\"  # Append to a section\n```\n\n### Inbox\n\n```bash\nsb inbox list               # List notes in vault inbox\nsb inbox list --detail      # Include frontmatter for each note\n```\n\n### Setup and Tooling\n\n```bash\nsb init --name primary --path ~/Vaults/my-vault   # Initialize vault config\nsb init --scaffold                                 # Also create vault CLAUDE.md\nsb permissions                                     # Show Claude Code permission entries\nsb provenance                                      # Show current git context\nsb describe                                        # Full command schema as JSON\nsb describe --command note                         # Schema for a specific command\n```\n\n### Dry Run\n\nAll mutating commands support `--dry-run` to preview without writing:\n\n```bash\nsb note create --title \"Test\" --content \"...\" --dry-run\nsb note move --from \"Inbox/test.md\" --to \"Areas/\" --dry-run\nsb daily append --section \"## Links\" --content \"...\" --dry-run\nsb init --name test --path ~/vault --dry-run\n```\n\n## Agent Integration\n\nsb is designed to be called by AI agents. Key features:\n\n- **JSON output** on all commands for easy parsing\n- **`--dry-run`** on mutating commands for safe previews\n- **`sb describe`** for runtime schema introspection\n- **`sb permissions`** generates Claude Code permission entries\n- **Input validation** rejects path traversal, control characters, and URL-encoded strings\n- **`--source auto`** detects git provenance from the agent's working directory\n\n## Full Reference\n\nSee [docs/command-reference.md](docs/command-reference.md) for detailed output examples, error behavior, and edge cases.\n\n## Development\n\n```bash\nnpm install          # Install dependencies\nnpm test             # Run tests (vitest)\nnpm run test:watch   # Watch mode\nnpm run build        # Compile TypeScript\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalpickles%2Fsb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnicalpickles%2Fsb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalpickles%2Fsb/lists"}