Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

secondbrain-entity

/secondbrain-entity

Dodaje własny typ encji do projektu secondbrain poza wbudowanymi typami ADR, Note, Task i Discussion.

Repozytorium
ai ↗
Licencja
Unlicense
Ostatnia zmiana repozytorium
17.08.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 17.08.2026, bez odwołań do wycofanych modeli i API.

Licencja

Unlicense, otwarta.

Co robi i kiedy

Dodaje własny typ encji do projektu secondbrain poza wbudowanymi typami ADR, Note, Task i Discussion.

Wyzwalacze z opisu

add entitycreate custom entitynew entity typedefine entity
Oryginalny opis (EN)

This skill should be used when the user asks to "add entity", "create custom entity", "new entity type", "define entity", or mentions wanting to add a new trackable data type to their secondbrain project beyond the predefined ADR, Note, Task, and Discussion types.

Jak działa

  1. Prerequisites
  2. Workflow
  3. Field Types
  4. ID Formats
  5. Tips
Sekcje z nagłówków SKILL.md, w oryginale · 274 linii, 754 słów
Podgląd SKILL.md
---
name: secondbrain-entity
description: |
  This skill should be used when the user asks to "add entity", "create custom entity",
  "new entity type", "define entity", or mentions wanting to add a new trackable data type
  to their secondbrain project beyond the predefined ADR, Note, Task, and Discussion types.
---

# Add Custom Entity

Create custom entity types with schema validation and VitePress integration.

## Prerequisites

Verify secondbrain is initialized:
1. Check for `.claude/data/config.yaml`
2. If not found, suggest running `secondbrain-init` first

## Workflow

### Step 1: Gather Entity Information

Collect from user:

1. **Entity Name** — Plural name (e.g., "contacts", "projects", "bookmarks")
2. **Singular Name** — For display (e.g., "contact", "project", "bookmark")
3. **Fields** — Custom fields for the entity:
   - Field name (snake_case)
   - Field type (string, integer, boolean, date, array, enum)
   - Required or optional
   - For enums: allowed values
4. **ID Format** — How records are numbered/identified:
   - Sequential (`PREFIX-XXXX`)
   - Date-based (`YYYY-MM-DD-slug`)
   - UUID
5. **Status Workflow** (optional) — If entity has status tracking

### Step 2: Generate Schema

Create `.claude/data/<entity>/schema.yaml`:

```yaml
type: object
required: [records]
properties:
  last_number:
    type: integer
    description: Last assigned sequential number
  records:
    type: array
    items:
      type: object
      required: [id, title, created, file]
      properties:
        id:
          type: string
          description: Unique identifier
        title:
          type: string
          description: Display title
        created:
          type: string
          format: date
        file:
          type: string
          description: Path to markdown file
        status:
          type: string
          enum: [active, archived]
        # ... custom fields
```

### Step 3: Initialize Records File

Create `.claude/data/<entity>/records.yaml`:

```yaml
last_number: 0
records: []
```

### Step 4: Create Document Template

Create `templates/entities/<entity>/TEMPLATE.md`:

```markdown
---
id: {{id}}
title: {{title}}
created: {{date}}
status: active
# ... custom fields
---

# {{title}}

## Overview

[Description]

## Details

[Content]
```

### Step 5: Create VitePress Data Loader

Create `docs/.vitepress/data/<entity>.data.ts`:

```typescript
import { defineLoader } from 'vitepress'
import fs from 'fs'
import yaml from 'js-yaml'

interface Record {
  id: string
  title: string
  created: string
  file: string
  status: string
  // ... custom fields
}

export interface Data {
  records: Record[]
  lastNumber: number
}

declare const data: Data
export { data }

export default defineLoader({
  watch: ['.claude/data/<entity>/*.yaml'],
  async load(): Promise<Data> {
    const recordsPath = '.claude/data/<entity>/records.yaml'

    if (!fs.existsSync(recordsPath)) {
      return { records: [], lastNumber: 0 }
    }

    const content = fs.readFileSync(recordsPath, 'utf-8')
    const parsed = yaml.load(content) as any

    return {
      records: parsed.records || [],
      lastNumber: parsed.last_number || 0
    }
  }
})
```

### Step 6: Create Documentation Index

Create `docs/<entity>/index.md`:

```markdown
---
title: <Entity> Index
---

# <Entity>

<script setup>
import { data } from '../.vitepress/data/<entity>.data'
import EntityTable from '../.vitepress/theme/components/EntityTable.vue'

const columns = [
  { key: 'id', label: 'ID', sortable: true },
  { key: 'title', label: 'Title', sortable: true },
  { key: 'created', label: 'Created', sortable: true },
  { key: 'status', label: 'Status', sortable: true }
]
</script>

<EntityTable :data="data.records" :columns="columns" />
```

### Step 7: Update Configuration

Add entity to `.claude/data/config.yaml`:

```yaml
entities:
  <entity>:
    enabled: true
    singular: <singular>
    id_format: sequential  # or date-based, uuid
    prefix: PREFIX         # for sequential IDs
    freshness:
      stale_after_days: 30
    fields:
      - name: field_name
        type: string
        required: true
```

### Step 8: Update Sidebar

Add to `docs/.vitepress/config.ts` sidebar:

```typescript
{
  text: '<Entity>',
  collapsed: true,
  items: [
    { text: 'Overview', link: '/<entity>/' }
  ]
}
```

### Step 9: Confirm Creation

```
## Entity Created

**Name:** <entity>
**Singular:** <singular>
**ID Format:** sequential (PREFIX-XXXX)
**Status Tracking:** Yes

### Fields
| Field | Type | Required |
|-------|------|----------|
| title | string | Yes |
| description | string | No |
| priority | enum (low, medium, high) | No |

### Files Created
- `.claude/data/<entity>/schema.yaml`
- `.claude/data/<entity>/records.yaml`
- `docs/.vitepress/data/<entity>.data.ts`
- `docs/<entity>/index.md`

### Next Steps
1. Create records using the new entity type
2. Add entity-specific skills if needed
3. Customize the index page layout
```

## Field Types

| Type | YAML Schema | Example |
|------|-------------|---------|
| string | `type: string` | "Hello world" |
| integer | `type: integer` | 42 |
| number | `type: number` | 3.14 |
| boolean | `type: boolean` | true/false |
| date | `type: string, format: date` | 2026-01-15 |
| datetime | `type: string, format: date-time` | 2026-01-15T10:30:00Z |
| array | `type: array, items: {...}` | [tag1, tag2] |
| enum | `type: string, enum: [...]` | "active" |

## ID Formats

### Sequential
Best for: Tasks, tickets, numbered records
```
PREFIX-0001, PREFIX-0002, PREFIX-0003
```

### Date-based
Best for: Notes, journal entries, time-sensitive content
```
2026-01-15-meeting-notes
2026-01-15-architecture-review
```

### UUID
Best for: Globally unique, import/export scenarios
```
550e8400-e29b-41d4-a716-446655440000
```

## Tips

1. **Keep fields minimal** — Start with essential fields, add more later
2. **Use enums for fixed values** — Better than free-form strings
3. **Consider status workflow** — Most entities benefit from status tracking
4. **Plan ID format carefully** — Hard to change after records exist
5. **Reuse existing patterns** — Look at ADR, Task, Note for inspiration
Pliki w paczce (2)
  • SKILL.md 6 KB
  • references/entity-schemas.md 8 KB

Wersje

W bazie nie ma innych skilli o nazwie secondbrain-entity.

Migawka bazy z 28.10.2026 · wersja paczki 2019240a71eb (skrót SHA-256 całej paczki)

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100secondbrain-search-init
    Konfiguruje i włącza wyszukiwanie semantyczne (qmd) w istniejącym projekcie secondbrain.
  • 100secondbrain-adr
    Tworzy rekord decyzji architektonicznej (ADR) ze śledzeniem statusu i organizacją w kategorie.
  • 100ha-entity-lifecycle
    Wyjaśnia cykl życia encji i rejestry urządzeń i encji w Home Assistant: rejestrację, async_added_to_hass, async_will_remove_from_hass, device_info i przywracanie stanu.
  • 100general-create-workspace
    Tworzy nową przestrzeń roboczą dla encji w backoffice Umbraco: prostą opartą na manifeście lub routowalną do edycji szczegółów encji z przepływami tworzenia i edycji.
  • 100model-entity-validator
    Sprawdza przy tworzeniu modeli Django i encji bazy danych, czy klasy dziedziczące po models.Model stosują wzorzec dziedziczenia BaseModel.
  • 100add-entity
    Dodaje encję lub agregat domenowy z konfiguracją EF i migracją do istniejącego modułu FSH, gdy potrzebny jest nowy byt w bazie danych.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.