Skip to content
Back to skills

Specs

ASecurity

> Generated via /vibeflow:gen-spec on 2026-04-13 > Source PRD: `.vibeflow/prds/bedrock-init-skill.md`

  • 96 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 27, 2026
data-airustgobashnodegitapifrontendbackendsecurity

Works with

  • claude code
  • api
  • mcp

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add iurykrieger/claude-bedrock --skill specs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Specs?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Specs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iurykrieger-specs/badge)](https://www.skillsdirectory.com/skills/iurykrieger-specs)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Spec: `/bedrock:init` — Vault Initialization Skill

> Generated via /vibeflow:gen-spec on 2026-04-13
> Source PRD: `.vibeflow/prds/bedrock-init-skill.md`

## Objective

New users can run `/bedrock:init` on any folder and get a fully scaffolded, configured Obsidian vault with connected example entities, dependency warnings, and a clear next-steps guide — zero manual setup required.

## Context

The Bedrock plugin currently has no initialization flow. Setup is implicit: skills assume directories exist, templates are in place, and the user understands the entity model. This kills adoption for anyone discovering the plugin via GitHub. The genericization effort removed company-specific references, but without an onboarding path the plugin remains inaccessible to new users.

Existing skills follow a consistent pattern: YAML frontmatter (`name`, `description`, `user_invocable`, `allowed-tools`), a `Plugin Paths` section, a `Visao Geral` overview, and phased execution. The init skill must follow this same structure.

The init skill is the **first thing a new user encounters**, so unlike existing skills (which are in Portuguese), this skill's output must adapt to the user's chosen language. The SKILL.md itself is written in English as the canonical instruction set — Claude adapts its output language based on the config.

## Definition of Done

1. **`skills/init/SKILL.md` exists** with correct frontmatter (`name: init`, `description`, `user_invocable: true`, `allowed-tools`) and follows the phased execution pattern of existing skills (Plugin Paths section, numbered phases, clear agent role statement).

2. **`.bedrock/config.json` is created** when the skill runs, containing at minimum: `version`, `language`, `preset`, `domains`, `initialized_at`, `initialized_by`. Schema is documented in the skill.

3. **All 7 entity directories are scaffolded** (`actors/`, `people/`, `teams/`, `topics/`, `discussions/`, `projects/`, `fleeting/`) with `_template.md` files copied from the plugin's `templates/` directory.

4. **5 connected example entities are generated** (1 team, 2 people, 1 actor, 1 topic, 1 project) with correct bidirectional wikilinks, hierarchical tags, proper frontmatter per template, and content adapted to the chosen preset and language.

5. **Vault-level `CLAUDE.md` is generated** describing the vault's purpose, content language, domain taxonomy, and key conventions — distinct from and non-overlapping with the plugin's `CLAUDE.md`.

6. **Dependencies are checked and reported** (graphify, confluence-to-markdown, gdoc-to-markdown) with warn-and-continue behavior: clear explanation of what each unlocks, install command provided, never blocks initialization.

7. **Idempotency is handled**: if `.bedrock/config.json` already exists, the skill detects it and offers reconfigure/skip options instead of blindly overwriting.

## Scope

- Single deliverable: `skills/init/SKILL.md`
- Interactive flow with 4 phases: language → dependencies → preset → scaffold
- 6 presets with domain mappings and example entity content defined inline
- `.bedrock/config.json` schema definition
- Vault `CLAUDE.md` generation template
- Mini-graph of 5 example entities per preset (names and content vary by preset)
- Next-steps guide printed to user after completion

## Anti-scope

- **Not** modifying existing skills to read `.bedrock/config.json` — that's a separate migration task
- **Not** localizing `_template.md` files — templates are copied as-is from the plugin; section headers remain in their original language. Future work.
- **Not** auto-installing any dependency — warn and provide commands only
- **Not** running `git init` — the user handles their own git setup
- **Not** creating discussion, fleeting, or knowledge-node example entities
- **Not** supporting vault migration from non-Bedrock vaults
- **Not** validating that Obsidian is installed or configured

## Technical Decisions

### TD1: `.bedrock/config.json` schema

```json
{
  "version": "1.0.0",
  "language": "en-US",
  "preset": "engineering",
  "domains": ["backend", "frontend", "infra", "data", "platform", "security"],
  "initialized_at": "2026-04-13",
  "initialized_by": "user@agent"
}
```

**Why `version`:** Future-proofing for schema migrations if config grows. Starts at `1.0.0` matching `plugin.json`.

**Why `domains` as explicit array:** Even when derived from a preset, storing the resolved domains allows custom modifications without losing the preset reference. Skills can read `domains` directly without needing to know preset→domain mappings.

**Trade-off:** Considered YAML (more readable in Obsidian) vs JSON. JSON chosen because it's a config file consumed by code/Claude, not a knowledge entity. Avoids YAML parsing ambiguity. Consistent with `plugin.json`.

### TD2: Template copying strategy

Read each `_template.md` from the plugin's `templates/{type}/` directory and write it to the vault's `{type}/_template.md`. No transformation — templates are copied verbatim.

**Why not translate templates?** Templates contain Dataview queries, frontmatter key patterns, and structural hints that Claude reads as-is. Translating section headers risks breaking downstream skill assumptions. The vault `CLAUDE.md` and `config.json` language setting tell Claude what language to use when _filling_ templates. The template structure itself is language-agnostic.

**Trade-off:** Users will see Portuguese section headers in `_template.md` files if they browse them in Obsidian. Acceptable for v0 — these are reference files, not user-facing content. Template localization is future work.

### TD3: Preset → example entity mapping

Each preset defines a set of example entity names, domains, and content themes. Defined inline in the SKILL.md as a lookup table rather than separate files.

**Why inline?** A single SKILL.md is easier to maintain and review. The preset data is small (6 presets × ~10 fields each). Separate preset files would add complexity without benefit.

**Preset definitions:**

| Preset | Team | People | Actor | Topic slug | Project | Domains |
|---|---|---|---|---|---|---|
| Engineering team | platform-team | alice-chen, bob-santos | billing-api | api-migration | platform-modernization | backend, frontend, infra, data, platform, security |
| Product management | product-team | carol-kim, david-mueller | analytics-dashboard | user-research-q1 | product-launch-v2 | product, design, research, analytics, growth |
| Company wiki | operations-team | emma-silva, frank-weber | internal-portal | onboarding-process | knowledge-base-rollout | engineering, product, operations, finance, hr, legal |
| Personal second brain | — (no team) | the-user (1 person) | reading-tracker | learning-rust | side-project-alpha | learning, career, projects, ideas, health, finance |
| Open source project | core-maintainers | alice-chen, bob-santos | my-oss-lib | v2-migration | v2-roadmap | core, docs, community, ci-cd, integrations |
| Custom | user-defined | user-defined | user-defined | user-defined | user-defined | user-defined |

**Personal second brain exception:** Only 1 person entity (the user themselves), no team entity. Adjusted mini-graph: 1 person, 1 actor, 1 topic, 1 project (4 entities instead of 5). The skill must handle this variant.

**Custom preset:** The skill asks the user to provide: vault name/purpose, 3-6 domain names, and optionally example entity names. If the user skips entity names, the skill generates generic ones.

### TD4: Dependency detection method

Use `Glob` to check for skill/plugin presence:

| Dependency | Check path | What it unlocks |
|---|---|---|
| graphify | `~/.claude/skills/graphify/SKILL.md` | Semantic code extraction for GitHub repos via `/bedrock:teach` |
| confluence-to-markdown | Check via Skill tool availability or `~/.claude/skills/confluence-to-markdown/` | Confluence page ingestion via `/bedrock:teach` |
| gdoc-to-markdown | Check via Skill tool availability or `~/.claude/skills/gdoc-to-markdown/` | Google Docs ingestion via `/bedrock:teach` |

**Why Glob over Bash?** Consistent with plugin conventions. If the check location is wrong (e.g., skills installed via plugins not skills directory), the warning is a false positive — acceptable since it's non-blocking.

### TD5: Vault CLAUDE.md content

The generated `CLAUDE.md` includes:
- Vault name and purpose (derived from preset or user input)
- Content language directive (e.g., "All content in this vault is written in English (en-US)")
- Domain taxonomy (the `domain/*` tags this vault uses)
- Entity type summary (quick reference of what each directory contains)
- Writing conventions specific to this vault (language, any custom rules)
- Pointer to Bedrock skills: "This vault is powered by the Bedrock plugin. Use `/bedrock:query` to search, `/bedrock:teach` to ingest, `/bedrock:preserve` to write."

**What it does NOT include:** Writing rules, tag syntax, git workflow, zettelkasten principles — all of that lives in the plugin's `CLAUDE.md` which is auto-loaded by Claude Code when the plugin is active.

### TD6: Idempotency behavior

If `.bedrock/config.json` exists when the skill runs:

1. Read and display current config (language, preset, domains)
2. Ask user: "This vault is already initialized. What would you like to do?"
   - **Reconfigure** — Update config.json and regenerate vault CLAUDE.md. Do NOT recreate directories or templates (they already exist). Do NOT touch example entities (user may have modified them).
   - **Skip** — Exit gracefully with no changes.

**Why no "full reinit" option?** Destructive re-scaffolding risks overwriting user content that evolved from example entities. If they truly want a fresh start, they can delete `.bedrock/` and the entity directories manually.

## Applicable Patterns

No `.vibeflow/patterns/` exist for this project. The following conventions are derived from the existing skills:

1. **SKILL.md frontmatter format:** `name`, `description` (multiline `>`), `user_invocable: true`, `allowed-tools` (comma-separated tool names)
2. **Plugin Paths section:** Must be the first section after the title, with the `<base_dir>` resolution pattern
3. **Phased execution:** Numbered phases (Fase 0, 1, 2...) with clear inputs/outputs per phase
4. **Agent role statement:** Bold declaration of what kind of agent this is ("You are an execution agent", "You are a setup agent")
5. **User confirmation before writes:** All entity creation goes through user confirmation (consistent with preserve skill pattern)
6. **Best-effort external calls:** MCP/tool failures are warned, never blocking (consistent with teach/query pattern)

## Risks

| Risk | Impact | Mitigation |
|---|---|---|
| Plugin templates path resolution fails at runtime | Scaffold incomplete — no `_template.md` files copied | SKILL.md includes explicit `<base_dir>` resolution pattern + fallback error message with manual copy instructions |
| Example entities have broken wikilinks | Graph view doesn't light up — bad first impression | DoD check #4 explicitly requires bidirectional links; SKILL.md includes a post-scaffold verification step |
| Dependency check paths are wrong (skills installed via different mechanism) | False positive warnings annoy users | Warnings are clearly labeled as "may not be detected if installed differently" + provide manual check command |
| Personal preset has different entity count (4 vs 5) | Skill logic breaks if it assumes 5 entities | TD3 explicitly documents the variant; SKILL.md handles it as a conditional branch |
| User runs init inside an existing vault with content | Example entities could conflict with real entities | Idempotency guard (TD6) prevents re-scaffolding. For first-time init in a non-empty folder, warn but proceed (files are additive, not destructive) |

Files in this skill

  • adaptive-ask-orchestrator.md11.5 KB
  • ask-graph-index.md10.1 KB
  • bedrock-init-skill.md11.6 KB
  • code-graphify-bridge-part-1.md7.1 KB
  • code-graphify-bridge-part-2.md10 KB
  • code-graphify-bridge-part-3.md10 KB
  • compress-graph-broken-backlinks.md19.2 KB
  • compress-healthcheck-split-part-1.md10.3 KB
  • compress-healthcheck-split-part-2.md9 KB
  • concept-entity.md7.6 KB
  • configurable-git-strategy-part-1.md5.9 KB
  • configurable-git-strategy-part-2.md5.6 KB
  • fetcher-layered-fallback.md9.3 KB
  • genericize-glossary.md3.7 KB
  • genericize-plugin-part-1.md6.5 KB
  • genericize-plugin-part-2.md5.3 KB
  • genericize-plugin-part-3.md6.9 KB
  • graphify-pipeline-refactor.md16.7 KB
  • graphify-setup-autoinstall.md9.3 KB
  • internalize-content-fetchers-part-1.md9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.