home / skills / sergio-bershadsky / ai / secondbrain-init

secondbrain-init skill

/plugins/secondbrain/skills/secondbrain-init

npx playbooks add skill sergio-bershadsky/ai --skill secondbrain-init

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
9.7 KB
---
name: secondbrain-init
description: |
  This skill should be used when the user asks to "create a secondbrain", "scaffold knowledge base",
  "init documentation portal", "set up second brain", "create TDA project", or mentions wanting to
  build a personal knowledge management system with VitePress and microdatabases.
---

# Secondbrain Project Scaffolding

Scaffold a complete knowledge management system with microdatabases, VitePress portal, and Claude automation.

## Overview

Initialize a new secondbrain project with:
- **Microdatabase architecture** (YAML + JSON Schema validation)
- **VitePress documentation portal** (custom theme, Vue components)
- **Configurable entity types** (ADRs, Discussions, Notes, Tasks, Custom)
- **Claude automation** (hooks, maximum freedom settings)

## Workflow

### Step 1: Gather Project Information

Ask the user for:

1. **Project name** (kebab-case, e.g., `my-knowledge-base`)
2. **Target directory** (default: `./<project-name>`)
3. **Use case** (optional context for customization):
   - Personal knowledge base
   - Project documentation
   - Team collaboration

### Step 2: Select Entity Types

Present entity selection with checkboxes:

```
## Entity Selection

Which entities would you like to enable?

[x] ADRs (Architecture Decision Records)
    - Numbered decisions with status workflow
    - Category-based numbering ranges

[x] Discussions (Meeting notes, conversations)
    - Monthly partitioned records
    - Participant tracking

[x] Notes (General knowledge capture)
    - Date-based IDs
    - Tag support

[ ] Tasks (Action items, todo tracking)
    - Sequential numbering
    - Priority and due dates

Would you like to define a custom entity type? (y/n)
```

### Step 3: Configure Semantic Search

Present search configuration options:

```
## Search Configuration

Which semantic search would you like to enable?

[ ] qmd (Claude Code search)
    - CLI-based semantic search for AI
    - Requires: bun/npm install -g qmd (~1.5GB models)
    - Best for: Local development, Claude Code integration

[ ] Orama (VitePress browser search)
    - Client-side semantic search for humans
    - Adds ~30MB to browser (on-demand model loading)
    - Best for: Static sites, offline-capable portals

[x] Both (Recommended)
    - Dual index: qmd for Claude, Orama for browser
    - Same semantic search quality for AI and humans

[ ] None (Skip search)
    - Use basic VitePress search (keyword only)
    - Can add semantic search later with /secondbrain-search-init
```

**Based on selection:**

| Selection | Actions |
|-----------|---------|
| qmd | Create `.claude/search/`, generate `qmd.config.json`, add search hook |
| Orama | Add Orama deps to `package.json`, generate `SearchBox.vue`, generate build script |
| Both | All of the above |
| None | Skip search setup, use VitePress native search |

### Step 5: Configure Maximum Freedom Settings

**CRITICAL**: Always propose creating `.claude/settings.local.json` with maximum permissions:

```json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "_comment": "Secondbrain project - maximum freedom for knowledge management",

  "permissions": {
    "allow_web_search": true,
    "allow_web_fetch": ["*"],
    "allow_read": ["~/**", "/tmp/**"],
    "allow_bash": ["*"],
    "auto_approve_write": ["<project_path>/docs/**"]
  }
}
```

Show the settings and ask for confirmation before proceeding.

### Step 6: Generate Scaffolding

Create the following structure:

```
<project-name>/
├── .claude/
│   ├── settings.local.json     # Max freedom permissions + hooks
│   ├── data/
│   │   ├── config.yaml         # Project configuration
│   │   ├── adrs/               # (if enabled)
│   │   │   ├── schema.yaml
│   │   │   └── records.yaml
│   │   ├── discussions/        # (if enabled)
│   │   │   ├── schema.yaml
│   │   │   └── YYYY-MM.yaml    # Current month
│   │   ├── notes/              # (if enabled)
│   │   │   ├── schema.yaml
│   │   │   └── records.yaml
│   │   └── tasks/              # (if enabled)
│   │       ├── schema.yaml
│   │       └── records.yaml
│   ├── lib/
│   │   └── tracking.py         # CRUD library with validation
│   ├── hooks/
│   │   ├── freshness-check.py
│   │   ├── sidebar-check.py
│   │   ├── session-context.py
│   │   └── search-index-update.py  # (if qmd enabled)
│   └── search/                     # (if qmd enabled)
│       └── (qmd index files)
├── docs/
│   ├── .vitepress/
│   │   ├── config.ts           # Navigation, sidebar, plugins
│   │   ├── theme/
│   │   │   ├── index.ts
│   │   │   ├── Layout.vue      # Giscus comments
│   │   │   ├── custom.css
│   │   │   └── components/
│   │   │       ├── EntityTable.vue
│   │   │       └── SearchBox.vue   # (if Orama enabled)
│   │   └── data/
│   │       └── <entity>.data.ts # Per enabled entity
│   ├── index.md                # Home page
│   ├── adrs/                   # (if enabled)
│   │   ├── index.md
│   │   └── TEMPLATE.md
│   ├── discussions/            # (if enabled)
│   │   ├── index.md
│   │   └── TEMPLATE.md
│   ├── notes/                  # (if enabled)
│   │   └── index.md
│   └── tasks/                  # (if enabled)
│       └── index.md
├── package.json                # VitePress dependencies
├── qmd.config.json             # (if qmd enabled)
├── CLAUDE.md                   # Project instructions
└── .gitignore
```

### Step 7: Generate Files

For each enabled entity, generate from templates in `${CLAUDE_PLUGIN_ROOT}/templates/`:

1. **Microdatabase files:**
   - `config.yaml` from `scaffolding/microdatabase/config.yaml.tmpl`
   - Entity `schema.yaml` from `entities/<entity>/schema.yaml`
   - Entity `records.yaml` initialized empty

2. **VitePress files:**
   - `config.ts` from `scaffolding/vitepress/config.ts.tmpl`
   - Theme files from `scaffolding/vitepress/theme/`
   - Data loaders from `scaffolding/vitepress/data/`

3. **Documentation:**
   - Home page from `scaffolding/docs/index.md.tmpl`
   - Entity index pages from `scaffolding/docs/entity-index.md.tmpl`
   - Templates from `entities/<entity>/TEMPLATE.md`

4. **Automation:**
   - `settings.local.json` from `scaffolding/claude/settings.local.json.tmpl`
   - `tracking.py` from `scaffolding/lib/tracking.py.tmpl`
   - Hooks from `hooks/` (copy to project)

5. **Search (if enabled):**
   - **qmd:** `qmd.config.json` from `scaffolding/search/qmd.config.json.tmpl`
   - **qmd:** Copy `search-index-update.py` hook
   - **Orama:** `SearchBox.vue` from `scaffolding/vitepress/theme/components/SearchBox.vue.tmpl`
   - **Orama:** `build-search-index.ts` from `scaffolding/vitepress/search/build-search-index.ts.tmpl`
   - **Orama:** Add dependencies to `package.json`

### Step 8: Show Summary

```
## Secondbrain Created Successfully!

**Project:** my-knowledge-base
**Location:** /path/to/my-knowledge-base
**Entities:** ADRs, Discussions, Notes

### Structure Created

.claude/
├── settings.local.json    ✓ Maximum freedom permissions
├── data/                  ✓ Microdatabases with schemas
├── lib/tracking.py        ✓ CRUD operations
└── hooks/                 ✓ Automation hooks

docs/
├── .vitepress/            ✓ Custom theme with EntityTable
├── adrs/                  ✓ Decision records
├── discussions/           ✓ Meeting notes
└── notes/                 ✓ Knowledge capture

### Next Steps

1. Navigate to project:
   cd my-knowledge-base

2. Install dependencies:
   npm install

3. Start development server:
   npm run docs:dev

4. Create your first decision:
   /secondbrain-adr infrastructure my-first-decision

5. Add a note:
   /secondbrain-note my-first-note

### Available Commands

- /secondbrain-search <query>          — Semantic search (if enabled)
- /secondbrain-adr <category> <title>  — Create ADR
- /secondbrain-note <title>            — Create note
- /secondbrain-discussion <who> <topic> — Document discussion
- /secondbrain-freshness               — Check what needs attention
- /secondbrain-entity <name>           — Add custom entity type
- /secondbrain-search-init             — Enable semantic search later
```

## Template Variables

When generating files, replace these variables:

| Variable | Description |
|----------|-------------|
| `{{project_name}}` | Project name (kebab-case) |
| `{{project_path}}` | Absolute path to project |
| `{{description}}` | Project description |
| `{{date}}` | Current date (YYYY-MM-DD) |
| `{{timestamp}}` | Current ISO timestamp |
| `{{year_month}}` | Current year-month (YYYY-MM) |
| `{{entities}}` | Array of enabled entity configs |

## Entity Configuration

Each entity has standard configuration:

```yaml
<entity_slug>:
  enabled: true
  label: "Entity Label"
  singular: "Entity"
  doc_path: docs/<entity_slug>
  freshness:
    stale_after_days: 30
```

## Additional Resources

### Reference Files

For detailed entity schemas and templates:

- **`references/entity-schemas.md`** — Predefined entity schema definitions

### Related Skills

- **secondbrain-search** — Semantic search your knowledge base
- **secondbrain-search-init** — Enable search on existing project
- **secondbrain-entity** — Add custom entity types
- **secondbrain-adr** — Create Architecture Decision Records
- **secondbrain-note** — Create notes
- **secondbrain-task** — Create tasks
- **secondbrain-discussion** — Document discussions
- **secondbrain-freshness** — Freshness report