cybersecurity
AI-powered cybersecurity code review skill for Claude Code. 8 specialist agents, OWASP 2025, CWE Top 25, MITRE ATT&CK, 11 languages, zero configuration.
Self-organizing AI second brain for Obsidian + Claude Code. Drop any source and Claude reads, links, and files it into one connected knowledge graph of plain Markdown you own. AI note-taking, personal knowledge management (PKM), and an open-source Notion alternative. Based on Karpathy's LLM Wiki pattern.
> /plugin marketplace add AgriciDaniel/claude-obsidian> /plugin install claude-obsidian@agricidaniel-claude-obsidian
What's inside
claude-obsidian is a local-first knowledge system for Claude Code and compatible Agent Skills hosts. It turns source material into linked, source-cited Obsidian pages; answers from the evidence already in the vault; and provides explicit workflows for research, retrieval, maintenance, and visual mapping.
Your vault remains a normal directory of Markdown, JSON, and source files. It is not hidden in a plugin cache, locked in a cloud database, or silently uploaded to a model.
Most AI note workflows stop after saving text. claude-obsidian is organized around a repeatable loop: retain the source, ground the claims, connect the knowledge, then put it back to work.
The output is meant to remain useful with or without an agent: plain Markdown for portability, Obsidian for navigation and visual exploration.
This is not an automatic transcript recorder, a cloud sync service, a factual oracle, or a substitute for backups and source control.
The safest first run uses a source checkout and a separate user vault. Every mutating setup command previews its exact operation before it can apply.
git clone https://github.com/AgriciDaniel/claude-obsidian.git
cd claude-obsidian
The checkout contains the product. It is not your knowledge vault.
export GENERATED_AT="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
export OPERATION_ID="init-reviewed"
python3 scripts/claude-obsidian.py init "$HOME/Documents/MyKnowledgeVault" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID"
Review the JSON plan and copy its approved_plan_sha256, then apply that exact
operation:
python3 scripts/claude-obsidian.py init "$HOME/Documents/MyKnowledgeVault" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID" \
--approved-plan-sha256 "<sha256-from-the-plan>" --apply
For an existing Obsidian vault, use the non-destructive adopt workflow
described in the installation guide.
Open the new directory in Obsidian, then run Claude Code from that directory with the local plugin:
cd "$HOME/Documents/MyKnowledgeVault"
claude --plugin-dir /absolute/path/to/claude-obsidian
Start with:
/claude-obsidian:wiki
Then place a source in inbox/ and invoke
/claude-obsidian:wiki-ingest. Save an answer explicitly with
/claude-obsidian:save; ask the vault with /claude-obsidian:wiki-query.
For Codex, OpenCode, or Gemini, preview and then apply the portable skill links from the product checkout:
bash bin/setup-multi-agent.sh --host codex
bash bin/setup-multi-agent.sh --host codex --apply
Cursor and Windsurf use workspace-local skill discovery. Marketplace setup, every supported host, vault adoption, upgrades, and uninstall steps are covered in the full installation guide.
The skills are small enough to invoke directly and coordinated enough to share the same evidence, vault-selection, and mutation rules.
| Skill | What it does |
|---|---|
wiki | Initializes or adopts a vault, diagnoses readiness, and routes work |
save | Saves one scoped answer or insightβnever an automatic transcript |
wiki-ingest | Turns captured sources into linked pages and provenance records |
wiki-query | Answers read-only from relevant vault evidence |
wiki-lint | Reports dead links, orphans, metadata gaps, stale indexes, and empty sections |
| Skill | What it adds |
|---|---|
autoresearch | Bounded web research with explicit egress and a separate canonical merge |
canvas | Wiki-scoped Obsidian Canvas creation and maintenance |
defuddle | Clean, readable web content before ingestion |
wiki-fold | Extractive, traceable rollups of the operation log |
wiki-mode | Generic, LYT, PARA, or Zettelkasten filing conventions |
wiki-retrieve | Contextual prefixes, BM25, and optional cosine reranking |
wiki-cli | Obsidian CLI reads and search with transaction-safe writes |
| Skill | What it provides |
|---|---|
obsidian-markdown | Correct Obsidian Flavored Markdown, links, embeds, and callouts |
obsidian-bases | Native .base tables, cards, filters, formulas, and summaries |
think | A structured observe, listen, connect, create, and grow review loop |
Claude Code exposes namespaced invocations such as
/claude-obsidian:wiki-lint; other hosts use their native Agent Skills
invocation. Trigger phrases and exact contracts live in each
skills/<name>/SKILL.md.
The product never treats a source checkout, plugin cache, or contributor state
as the default vault. A vault is selected explicitly, through
CLAUDE_OBSIDIAN_VAULT, by the nearest .claude-obsidian.json, or by one
unambiguous initialized ancestor. If selection is uncertain, the command exits
without writing.
One logical knowledge operation is one recoverable transaction:
The core holds one process-lifetime vault lock, journals backups, uses atomic replacement, and restores the prior state if an apply cannot finish. A changed target is a conflict, never a silent overwrite. Git checkpoints, destructive repairs, network egress, and canonical research merges remain explicit operations.
Read the transaction contract, provenance contract, and Compound Vault architecture for the machine-facing detail.
| Input or capability | Current support |
|---|---|
| Local filesystem sources | Implemented bounded, content-addressed byte capture |
| Images | Metadata, hash, size, and bounded dimensions when available |
| PDF and EPUB | Metadata, hash, and size; no built-in semantic extraction |
| URL and YouTube | Validated consent plans; a configured external runner is required |
| OCR | Local-file consent plan; a configured external runner is required |
| BM25 retrieval | Local and deterministic |
| Contextual prefixes or remote models | Optional and gated by explicit egress consent |
| Obsidian CLI | Optional for reads/search; filesystem transport remains available |
High-risk accepted claims require two independent sources. Unsupported or contradictory evidence stays visible, and a grounded refusal is preferred over an invented citation. Model-based retrieval falls back to deterministic BM25 when the embedding or reranking stage cannot be trusted.
wiki-mode can route new notes using four methodologies without bulk-moving
existing knowledge:
| Mode | Filing principle |
|---|---|
| Generic | Sources, concepts, entities, and sessions |
| LYT | Maps of Content and linked atomic notes |
| PARA | Projects, Areas, Resources, and Archives |
| Zettelkasten | Stable identifiers, atomic notes, and dense links |
Generic is the default when no mode is configured. Switching modes changes how new notes are routed; it does not silently reorganize old ones. See the methodology modes guide.
The wrapper is python3 scripts/claude-obsidian.py.
| Command | Effect |
|---|---|
doctor --vault PATH | Show vault selection and readiness |
init PATH [--approved-plan-sha256 HASH --apply] | Plan or create a separate vault |
adopt PATH [--approved-plan-sha256 HASH --apply] | Plan or adopt an existing Obsidian vault |
migrate --vault PATH [--approved-plan-sha256 HASH --apply] | Add v1 ledgers and configuration without rewriting legacy data |
transaction inspect BUNDLE --vault PATH | Validate a write bundle without mutation |
transaction apply BUNDLE --vault PATH --approved-plan-sha256 HASH | Apply one inspected, recoverable operation |
transaction recover --vault PATH [--force-stale-lock] | Restore an interrupted operation |
lint --vault PATH [--as-of YYYY-MM-DD] | Emit findings deterministic for the declared UTC date |
contracts --verify --vault PATH | Execute capability readiness contracts |
capture plan --vault PATH [SOURCE ...] | Run a local capture preflight without writes |
capture apply --vault PATH [SOURCE ...] | Plan or create immutable content-addressed copies |
checkpoint OPERATION_ID --vault PATH | Explicitly commit one completed operation |
package validate | Check skills, hooks, manifests, and documentation coherence |
release build --output FILE.zip | Build and self-audit a deterministic public artifact |
release audit FILE.zip | Audit an artifact without extracting or publishing it |
High-level mutating planners emit approved_plan_sha256. Pin
--generated-at and --operation-id, review the JSON operation, and pass that
exact hash with --apply. Filesystem or generated-bundle drift fails before a
vault write.
product repository/ user vault/
βββ claude_obsidian/ βββ .gitignore
βββ skills/ βββ .claude-obsidian.json
βββ hooks/ βββ inbox/
βββ scripts/ βββ .raw/
βββ templates/vault/ βββ wiki/
βββ config/ βββ .obsidian/
βββ assets/ βββ .vault-meta/ # ignored runtime state
βββ tests/
Public artifacts contain product code, deterministic templates, and reviewed README assets. They reject contributor hot/log state, root raw sources, runtime metadata, private paths, recognizable personal email addresses, secrets, symlinks, unsafe archive entries, and unreviewed binaries.
The private development checkout deliberately has no marketplace catalog. The release builder injects the reviewed catalog only into the distribution-clean artifact. A public default branch must be populated from that audited tree, never by pushing contributor-vault state.
Upgrade the product independently from the vault. For an older vault, first preview the additive, idempotent migration:
python3 scripts/claude-obsidian.py migrate --vault /path/to/vault \
--generated-at "$GENERATED_AT" --operation-id migrate-reviewed
Review its hash and rerun with --approved-plan-sha256 HASH --apply.
Migration preserves the legacy raw manifest byte-for-byte and does not infer
claims from prose.
After an interrupted operation, run:
python3 scripts/claude-obsidian.py transaction recover --vault /path/to/vault
Removing the plugin or host links never removes the vault. Delete only the integration you installed; user notes, sources, ledgers, and Obsidian settings remain yours.
CI exercises Linux and macOS, plus a native-Windows smoke job for the portable
surface. On native Windows (including Git Bash), read-only inspection and
dry-run commands work; vault writes require WSL and fail closed with an
UNSUPPORTED_PLATFORM error otherwise. Approval hashes bind to the reviewing
environment, so review inside WSL when the apply will happen there. Platform
details, the support matrix, and WSL troubleshooting (including hangs from
virtualization conflicts) live in the
Windows and WSL guide. The bash setup scripts and shell
test suites remain POSIX-only. Optional tools such as Obsidian CLI, Ollama,
and defuddle are capability-detected and affect only their dependent workflow.
make test
The test target runs every hermetic Python and shell suite, product and capability contracts, skill and hook validation, manifest checks, and package boundaries. CI repeats the suite on supported Linux and macOS/Python combinations and verifies a byte-reproducible release build.
Build and audit locally without publishing:
python3 scripts/claude-obsidian.py release build --output dist/claude-obsidian.zip
python3 scripts/claude-obsidian.py release audit dist/claude-obsidian.zip
No command pushes, tags, publishes, opens issues, or creates releases automatically. See CONTRIBUTING.md, SECURITY.md, and CODE_OF_CONDUCT.md.
The design follows Andrej Karpathy's LLM Wiki pattern and uses kepano/obsidian-skills as the reference substrate for Obsidian Markdown, Bases, and JSON Canvas syntax.
MIT licensed. See ATTRIBUTION.md and CITATION.cff.
.claude-plugin/
marketplace.json
plugin.json
.cursor/
rules/
claude-obsidian.mdc
.gitattributes
.github/
copilot-instructions.md
FUNDING.yml
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
pull_request_template.md
workflows/
test.yml
.gitignore
.windsurf/
rules/
claude-obsidian.md
agents/
AGENTS.md
verifier.md
wiki-ingest.md
wiki-lint.md
assets/
cover.png
diagrams/
knowledge-loop.svg
product-vault-boundary.svg
screenshots/
graph-view.png
wiki-map-view.png
ATTRIBUTION.md
bin/
setup-dragonscale.sh
setup-mode.sh
setup-multi-agent.sh
setup-retrieve.sh
setup-vault.sh
CHANGELOG.md
CITATION.cff
claude_obsidian/
__init__.py
__main__.py
capture.py
checkpoint.py
cli.py
contracts.py
extensions.py
gates.py
hook_adapter.py
json_utils.py
ledgers.py
legacy_lock.py
lint_engine.py
mode_config.py
package_validation.py
paths.py
release.py
transaction.py
url_safety.py
vault_ops.py
CODE_OF_CONDUCT.md
CODEOWNERS
config/
adapters.json
capabilities.json
product-contract.json
public-marketplace.json
release-allowlist.json
CONTRIBUTING.md
docs/
compound-vault-guide.md
dragonscale-guide.md
install-guide.md
methodology-modes-guide.md
windows-wsl.md
examples/
sample-vault/
.claude-obsidian.json
.gitignore
.obsidian/
app.json
.raw/
.manifest.json
inbox/
.gitkeep
wiki/
concepts/
Source-grounded notes.md
entities/
Example Maintainer.md
hot.md
index.md
log.md
overview.md
questions/
What supports source-grounded notes.md
sources/
Example Source.md
GEMINI.md
hooks/
hooks.json
README.md
LICENSE
Makefile
PRIVACY.md
README.md
RELEASE_MANIFEST.json
scripts/
allocate-address.sh
bm25-index.py
boundary-score.py
claude-obsidian.py
contextual-prefix.py
detect-transport.sh
rerank.py
retrieve.py
tiling-check.py
wiki-lock.sh
wiki-mode.py
SECURITY.md
SHA256SUMS
skills/
autoresearch/
references/
program.md
SKILL.md
canvas/
references/
canvas-spec.md
SKILL.md
defuddle/
SKILL.md
obsidian-bases/
SKILL.md
obsidian-markdown/
SKILL.md
save/
SKILL.md
think/
SKILL.md
wiki/
wiki-cli/
SKILL.md
wiki-fold/
references/
fold-template.md
SKILL.md
wiki-ingest/
SKILL.md
wiki-lint/
SKILL.md
wiki-mode/
SKILL.md
templates/
lyt/
atomic-template.md
moc-template.md
para/
area-template.md
project-template.md
resource-template.md
zettel/
atomic-template.md
wiki-query/
SKILL.md
wiki-retrieve/
SKILL.md
references/
css-snippets.md
frontmatter.md
git-setup.md
install-modes.md
mcp-setup.md
modes.md
operation-transactions.md
plugins.md
provenance.md
rest-api.md
SKILL.md
templates/
vault/
.gitignore
.obsidian/
app.json
appearance.json
graph.json
snippets/
vault-colors.css
.raw/
.manifest.json
inbox/
.gitkeep
wiki/
hot.md
index.md
log.md
overview.md
tests/
fixtures/
capture/
sample.md
sample.pdf
contracts/
valid/
config/
capabilities.json
product-contract.json
skills/
example/
SKILL.md
forward/
ingest-source.md
query-evidence.md
query-index.md
scenarios.json
lint/
vault/
.vault-meta/
lint-allowlist.json
wiki/
assets/
picture.txt
concepts/
Alpha.md
Beta.md
Empty Section Page.md
Missing Frontmatter.md
Orphan.md
Shared.md
entities/
Shared.md
index.md
migration/
legacy-manifest.json
release/
public/
README.md
setup/
custom-app.json
excalidraw-manifest.json
test_allocate_address.sh
test_benchmark_tools.py
test_bm25_index.py
test_boundary_score.py
test_capture.py
test_checkpoint.py
test_cli_approval.py
test_cli_mode.py
test_concurrent_write.sh
test_contextual_prefix.py
test_contracts.py
test_detect_transport.py
test_distribution_vaults.py
test_extensions.py
test_gates.py
test_hooks.py
test_installed_tree_boundary.py
test_knowledge_contracts.py
test_ledgers.py
test_legacy_lock.py
test_lint_engine.py
test_package_validation.py
test_paths.py
test_release.py
test_retrieve.py
test_setup_multi_agent.py
test_setup_retrieve.py
test_setup_vault.py
test_setup_wrappers.py
test_tiling_check.py
test_transaction.py
test_vault_ops.py
test_vault_root_separation.py
test_wiki_lock.sh
test_wiki_mode.py
test_windows_compat.py
WIKI.mdAI-powered cybersecurity code review skill for Claude Code. 8 specialist agents, OWASP 2025, CWE Top 25, MITRE ATT&CK, 11 languages, zero configuration.
AI image generation skill for Claude Code where Claude acts as Creative Director using Google's Gemini Nano Banana models.
Interactive longform-to-shortform video creator powered by Claude Code. Extracts viral-ready vertical clips from long videos using Claude as the intelligent orchestrator with Remotion-rendered premium animated captions.
FAQ
claude-obsidian is a Claude Code plugin with 15 hand-picked skills for productivity work, indexed on Flowy. Install it with the command on its page. It includes autoresearch, canvas, defuddle. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.