Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -1670,6 +1670,28 @@
"security",
"compliance"
]
},
{
"name": "bedrock",
"description": "Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills",
"version": "1.2.0",
"author": {
"name": "Iury Krieger",
"url": "https://github.com/iurykrieger"
},
"source": "./plugins/bedrock",
"category": "Knowledge Management",
"homepage": "https://github.com/ccplugins/awesome-claude-code-plugins/tree/main/plugins/bedrock",
"keywords": [
"obsidian",
"second-brain",
"knowledge-base",
"zettelkasten",
"vault",
"knowledge-management",
"knowledge-graph",
"note-taking"
]
}
]
}
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Awesome Claude Code plugins — a curated list of slash commands, subagents, MCP
- [Development Engineering](#development-engineering)
- [Documentation](#documentation)
- [Git Workflow](#git-workflow)
- [Knowledge Management](#knowledge-management)
- [Marketing Growth](#marketing-growth)
- [Project & Product Management](#project--product-management)
- [Security, Compliance, & Legal](#security-compliance--legal)
Expand Down Expand Up @@ -159,6 +160,9 @@ Install or disable them dynamically with the `/plugin` command — enabling you
- [pr-review](./plugins/pr-review)
- [update-branch-name](./plugins/update-branch-name)

### Knowledge Management
- [bedrock](./plugins/bedrock)

### Marketing Growth
- [app-store-optimizer](./plugins/app-store-optimizer)
- [content-creator](./plugins/content-creator)
Expand Down
23 changes: 23 additions & 0 deletions plugins/bedrock/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "bedrock",
"description": "Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills",
"version": "1.2.0",
"author": {
"name": "Iury Krieger",
"url": "https://github.com/iurykrieger"
},
"homepage": "https://github.com/ccplugins/awesome-claude-code-plugins/tree/main/plugins/bedrock",
"repository": "https://github.com/iurykrieger/claude-bedrock",
"license": "MIT",
"category": "knowledge-management",
"keywords": [
"obsidian",
"second-brain",
"knowledge-base",
"zettelkasten",
"vault",
"knowledge-management",
"knowledge-graph",
"note-taking"
]
}
227 changes: 227 additions & 0 deletions plugins/bedrock/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
# Bedrock — CLAUDE.md

Instructions for AI agents working on Obsidian vaults powered by the Bedrock plugin.

---

## What is Bedrock?

**Bedrock** is a Claude Code plugin that turns any Obsidian vault into a structured Second Brain. It provides entity management, ingestion, compression, and sync automation — all via Claude Code skills.

This is **not a codebase**. The target vault is markdown-only — no build system, no tests, no deployable artifacts. The primary consumers are humans reading in Obsidian and AI agents writing via skills.

---

## Entity Types

The vault organizes knowledge into 8 entity types, each in its own directory:

| Entity | Directory | Filename pattern | Example |
|---|---|---|---|
| Actors | `actors/` | `repo-name.md` | `billing-api.md` |
| People | `people/` | `first-last.md` | `alice-smith.md` |
| Teams | `teams/` | `squad-name.md` | `squad-payments.md` |
| Concepts | `concepts/` | `slug.md` | `event-sourcing.md` |
| Topics | `topics/` | `YYYY-MM-category-slug.md` | `2026-04-feature-new-checkout.md` |
| Discussions | `discussions/` | `YYYY-MM-DD-slug.md` | `2026-04-02-daily-payments.md` |
| Projects | `projects/` | `slug.md` | `processing-3-0.md` |
| Fleeting | `fleeting/` | `YYYY-MM-DD-slug.md` | `2026-04-09-new-tokenization-service.md` |

Each entity type has a `_template.md` defining the required frontmatter and structure. **Always follow the template when creating new entities.**

Entity semantic definitions live in the plugin's `entities/` directory — used by `/bedrock:teach` and `/bedrock:preserve` to classify content.

---

## Writing Rules

### Language
- **English (en-US)** for all content by default (configurable via `/bedrock:setup`)
- Technical terms in English are accepted (PCI, API, Kafka, etc.)

### Frontmatter
- YAML between `---` delimiters
- **Keys always in English** (`type`, `name`, `status`, `updated_at`, `updated_by`)
- **Values in the vault's configured language** (`description: "Billing and invoicing API"`)
- Array references use wikilink syntax: `["[[name1]]", "[[name2]]"]`
- Every entity must have `updated_at` (YYYY-MM-DD) and `updated_by` (person or `name@agent`)

### Wikilinks
- Bare names only: `[[notification-service]]`, never `[[actors/notification-service]]`
- Bidirectional links expected (see template for link table per entity type)
- Add new links, **never remove** existing ones
- Links to non-existent files are fine — Obsidian shows them as creation invitations

### Tags (hierarchical)
Tags use `/` separator for multi-dimensional filtering in Obsidian graph view:

| Dimension | Prefix | Values |
|---|---|---|
| Type | `type/` | `actor`, `person`, `team`, `concept`, `topic`, `discussion`, `project`, `fleeting` |
| Status | `status/` | `active`, `deprecated`, `planning`, `blocked`, `done`, `in-progress`, `open`, `completed`, `cancelled`, `raw`, `reviewing`, `promoted`, `archived` |
| Domain | `domain/` | `payments`, `finance`, `notifications`, `checkout`, `orders`, `integrations`, `compliance`, `core`, `data`, `infra`, `marketplace`, `internal-tools`, `platform`, `security` |
| Scope | `scope/` | `pci`, `sox`, `lgpd` (fintech), `hipaa` (health), `gdpr` (Europe), `soc2` (SaaS) |
| Category | `category/` | `deprecation`, `bugfix`, `troubleshooting`, `rfc`, `incident`, `feature`, `compliance` |

These are examples — both domains and scopes are extensible. Add new values as your organization grows (e.g. new teams, new compliance requirements).

Rules:
- `type/*` mandatory on all entities
- `status/*` mandatory on actors and topics
- `domain/*` mandatory on actors and teams
- `scope/*` and `category/*` only when applicable

### Aliases
- Minimum 1 alias per entity (Obsidian `aliases` field)
- Must not duplicate the filename
- Format: `aliases: ["Readable Name", "Acronym"]`

### Callouts
| Callout | When | Mandatory? |
|---|---|---|
| `> [!warning] Deprecated` | Actor/topic with status deprecated | Yes |
| `> [!danger] PCI Scope` | Actor with `pci: true` | Yes |
| `> [!danger] SOX Scope` | Actor with SOX scope | Yes |
| `> [!info]`, `> [!todo]`, `> [!bug]` | Contextual highlights | No — use sparingly |

### Filenames
- Kebab-case, no accents, lowercase
- Actor filenames = GitHub repository name (canonical identifier)

---

## Update Rules

| Entity | Body | Frontmatter |
|---|---|---|
| **Actors** | May modify and merge — new data replaces stale content | Merge new data, never delete fields |
| **People, Teams, Concepts, Topics** | Append-only — never delete content from another agent/human | Merge new data, never delete fields |
| **All** | Never remove existing wikilinks | Always update `updated_at` and `updated_by` |

---

## Skills

These are the Claude Code skills provided by the Bedrock plugin:

| Skill | Purpose |
|---|---|
| `/bedrock:ask` | Orchestrated vault reader — decomposes questions, searches graph and vault, cross-references entities |
| `/bedrock:teach` | Ingest external sources (Confluence, Google Docs, GitHub repositories, remote URLs, and any file format supported by docling — DOCX, PPTX, XLSX, PDF, HTML, EPUB, images, and more) — extracts entities — delegates to `/bedrock:preserve` |
| `/bedrock:preserve` | Single write point — entity detection, matching, create/update, bidirectional links, git commit |
| `/bedrock:compress` | Vault alignment engine — fixes broken backlinks, concept fragmentation, entity miscategorization, duplicated entities, misnamed entities. Supports `--mode cron` for scheduled execution |
| `/bedrock:healthcheck` | Read-only vault health diagnostic — checks graphify-out integrity, setup, orphan entities, dangling content, old content (>15 days). Safe to run at any frequency |
| `/bedrock:sync` | Re-sync entities with external sources. Flags: `--people` (sync contributors), `--github` (sync PRs/activity) |
| `/bedrock:vaults` | Manage registered vaults — list, set default (`--set-default <name>`), remove (`--remove <name>`) |

---

## Vault Resolution

Bedrock supports multiple vaults. Each vault is registered by name in a global registry
(`vaults.json` in the plugin directory) during `/bedrock:setup`. Skills can target any
registered vault using the `--vault <name>` flag, regardless of the current working directory.

### Registry

The vault registry lives at `<plugin_dir>/vaults.json` with this schema:

```json
{
"vaults": [
{ "name": "my-vault", "path": "/absolute/path/to/vault", "default": true },
{ "name": "team-vault", "path": "/absolute/path/to/team-vault", "default": false }
]
}
```

- Vault names are **kebab-case**, lowercase, unique
- Exactly one vault is marked as `"default": true`
- The registry is created automatically during `/bedrock:setup`
- Manage vaults with `/bedrock:vaults` (list, set-default, remove)

### Resolution Precedence

When a skill needs to determine which vault to operate on, it follows this chain:

1. **Explicit flag** — `--vault <name>` targets the named vault from the registry
2. **CWD detection** — if the current directory is inside a registered vault path, use that vault
3. **Default vault** — use the vault marked as default in the registry
4. **Error** — no vault resolved; display available vaults and ask the user to specify

This keeps full backward compatibility — users already working inside a vault directory
don't need to change anything.

### Plugin Reinstall Note

If the Bedrock plugin is reinstalled, the `vaults.json` registry file may be lost.
Vault data on disk is unaffected. Re-run `/bedrock:setup` inside each vault to
re-register it.

---

## Git Workflow

Bedrock supports 3 git strategies, configured via `.bedrock/config.json` (`git.strategy` field):

| Strategy | Behavior | When to use |
|---|---|---|
| `commit-push` (default) | Commit + push to `main` + rebase retry (max 2 attempts) | Solo vaults, trusted contributors |
| `commit-push-pr` | Commit to branch + push + open PR targeting `main` via `gh` CLI | Team vaults requiring review |
| `commit-only` | Commit locally, no push | Offline or local-only vaults |

When `git.strategy` is absent from config (or `.bedrock/config.json` does not exist), all skills default to `commit-push` for backwards compatibility.

**Branch naming for `commit-push-pr`:** `vault/<YYYY-MM-DD>-<slug>` where `<slug>` is derived from the commit message (entity name, `batch-N-entities`, `compress-N-entities`, etc.). If the branch already exists, a counter is appended (e.g., `-2`).

- **Pull before write**: `git pull --rebase origin main`
- **Commit convention**: `vault(<type>): <verb> <name> [source: <origin>]`

| Field | Values |
|---|---|
| `<type>` | `person`, `team`, `actor`, `concept`, `topic`, `discussion`, `project`, `note` |
| `<verb>` | `creates`, `updates`, `links`, `compresses` |
| `<origin>` | `memory`, `github`, `jira`, `confluence`, `gdoc`, `sheets`, `manual`, `compress` |

Examples:
```
vault(actor): updates billing-api [source: github]
vault: teaches roadmap-26q1, creates 7 topics [source: confluence]
vault: compresses 25 entities across 8 clusters [source: compress]
```

---

## Zettelkasten Principles

The vault follows adapted Zettelkasten principles. Each entity type has a **role** in the knowledge graph:

| Role | Entity types | Behavior |
|---|---|---|
| **Permanent notes** | `actors/`, `people/`, `teams/`, `concepts/` | Consolidated, stable knowledge. Self-contained. |
| **Bridge notes** | `topics/`, `discussions/` | Connect permanents, explaining *why* they relate. |
| **Index notes** | `projects/` | Curation — organize reading paths (thematic MOCs). |
| **Fleeting notes** | `fleeting/` | Inbox — raw ideas, forming concepts. Temporary by design. |

### Linking Rules

1. **Frontmatter = structural.** Arrays in frontmatter define organizational relationships (team, members, actors). Feed Dataview queries.
2. **Body = semantic.** Wikilinks in the body must have textual context: "processes payments via [[billing-api]]", not just "[[billing-api]]".
3. **Bridges are the connective tissue.** If two actors relate, the explanation lives in a topic or discussion — not duplicated in both.
4. **Index notes point, they don't explain.** Projects direct the reader to bridges and permanents.
5. **Fleeting notes are temporary.** They should be promoted (to permanent/bridge) or archived.
6. **Provenance via `sources` field.** Every entity can record where its data came from in the `sources` frontmatter field (list of `{url, type, synced_at}`). See `entities/sources-field.md` in the plugin.

Details in `entities/*.md` (section "Zettelkasten Role" per type) within the plugin directory.

---

## Don'ts

- **Never** use flat tags (`[actor]`) — always hierarchical (`[type/actor]`)
- **Never** use path-qualified wikilinks — `[[name]]`, not `[[dir/name]]`
- **Never** use display names in wikilinks — `[[notification-service]]`, not `[[NotificationService]]`
- **Never** delete content in people/teams/concepts/topics written by another agent or human
- **Never** delete existing wikilinks or frontmatter fields
- **Never** commit credentials, tokens, PANs, CVVs, or any sensitive data
- **Never** log raw card data (PAN, CVV, tracks, EMV) in documentation examples
21 changes: 21 additions & 0 deletions plugins/bedrock/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Iury Krieger

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
46 changes: 46 additions & 0 deletions plugins/bedrock/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Bedrock

Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills.

**Upstream repository:** https://github.com/iurykrieger/claude-bedrock
**Homepage:** https://claude-bedrock.vercel.app

## What it does

Bedrock turns any Obsidian vault into a structured Second Brain following adapted Zettelkasten principles. Knowledge is organized into **8 entity types** (actors, people, teams, concepts, topics, discussions, projects, fleeting notes), each with YAML frontmatter, hierarchical tags (`type/`, `status/`, `domain/`, `scope/`), and bidirectional wikilinks.

No build system. No runtime. Just markdown files, AI agents, and your Obsidian vault.

## Skills

| Skill | Purpose |
|---|---|
| `/bedrock:setup` | Interactive vault initialization and configuration |
| `/bedrock:ask` | Orchestrated vault reader — decomposes questions, searches graph and vault, cross-references entities |
| `/bedrock:teach` | Ingest external sources (Confluence, Google Docs, GitHub, DOCX/PPTX/XLSX/PDF/HTML/EPUB via docling) and extract entities |
| `/bedrock:preserve` | Single write point — detect, match, create/update entities with bidirectional links |
| `/bedrock:compress` | Deduplication and vault health — fix broken backlinks, merge duplicates, consolidate fragmented concepts |
| `/bedrock:sync` | Re-sync entities with external sources (GitHub PRs/activity, contributors) |
| `/bedrock:healthcheck` | Read-only vault health diagnostic — graphify-out integrity, orphans, dangling content |
| `/bedrock:vaults` | Manage registered vaults — list, set default, remove |

## Dependencies

- [graphify](https://github.com/iurykrieger/graphify) — semantic code extraction and knowledge-graph pipeline (auto-installed by `/bedrock:setup`)
- [docling](https://github.com/docling-project/docling) — universal file → markdown converter (auto-installed by `/bedrock:setup`)

## Install

```bash
/plugin install bedrock@awesome-claude-code-plugins
```

Then scaffold a vault:

```
/bedrock:setup
```

## License

[MIT](LICENSE) — Iury Krieger
Loading