From fd84a7490219f9fa6c55a919b08ff35ec9c95c25 Mon Sep 17 00:00:00 2001 From: masudaso Date: Mon, 13 Apr 2026 12:25:49 +0900 Subject: [PATCH] docs: rewrite READMEs for clarity and GitHub best practices Restructure both README.md and README.ja.md to follow the recommended GitHub README format: what the project does, why it is useful, key features, getting started, how it works, and configuration. Key changes: - Add version 0.2.0 badge - Replace detailed pipeline diagram with concise hook-by-hook overview - Simplify setup instructions and prerequisites - Consolidate note lifecycle and vault output sections - Improve contribution guidelines with explicit expectations - Align Japanese README with English content Co-Authored-By: Claude Opus 4.6 --- README.ja.md | 196 +++++++++++++++++++++++++-------------------------- README.md | 189 ++++++++++++++++++++++++------------------------- 2 files changed, 189 insertions(+), 196 deletions(-) diff --git a/README.ja.md b/README.ja.md index 2d38296..c77badf 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,152 +1,152 @@ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![Status: Early Access](https://img.shields.io/badge/status-early%20access-blue.svg)](#) +[![Version: 0.2.0](https://img.shields.io/badge/version-0.2.0-lightgrey.svg)](#) [English README](./README.md) # second-brain -`second-brain` は、Obsidian vault を自律的な Knowledge OS に変える Claude Code ローカルプラグインです。Claude Code で作業するだけでノートが蓄積されます。テンプレート規約に沿った構造化コンテンツが、手動キャプチャなしで自動生成されます。 +Obsidian vault を自律的な Knowledge OS に変える Claude Code ローカルプラグインです。 +このリポジトリは制御レイヤーとして機能し、セッションキャプチャ、ガードレール、構造化ドラフト、昇格ワークフローを提供します。 -> このリポジトリは **制御レイヤー** です。長期記憶は Obsidian vault 側にあります。 +## このプロジェクトが提供するもの -## 設計原則 +`second-brain` は Claude Code セッションの活動を取り込み、Obsidian ノートを構造化して自動生成します。 +次の機能を管理します。 -| 原則 | 意味 | -|------|------| -| **Zero-friction Capture** | 明示的なメモ取り不要。Claude Code で仕事するだけで vault が育つ | -| **Schema Enforcement** | AI 出力は [`masuda-so/Template-Vault`](https://github.com/masuda-so/Template-Vault) と [`kepano/obsidian-skills`](https://github.com/kepano/obsidian-skills) のテンプレートに沿った内容のみ生成する | -| **Human as a Filter** | 書くのは AI、人間の役割は `Meta/Promotions/` のドラフトを承認・削除するだけ | - -## 仕組み +- Claude Code のセッションライフサイクルイベント用フック +- ワークフロー制御用のローカルプラグインコマンドとエージェント +- vault を保護するガードスクリプト +- `Ideas/`, `Meta/Promotions/`, `References/` への段階的なドラフト昇格 -3つのパイプラインが Claude Code セッションの前後で自動的に動きます。 +Obsidian vault は長期記憶として残り、このリポジトリがノートの取り込み、レビュー、昇格をオーケストレーションします。 -``` -Claude Code で作業 - │ - ├─ session-memory.sh (常時稼働) ─→ Meta/AI Sessions/ (生ログ) - │ - ├─ harvest.py (hook 駆動) - │ ├─ queue [UserPromptSubmit / PostToolUse] - │ ├─ worker [Stop] ──────────→ Ideas/ または Meta/Promotions/ - │ └─ flush [SessionEnd] ────→ References/ 自動ドラフト (L3) + Daily リンク - │ - └─ [SessionEnd] on-end-distill.sh - ├─ distill.py + distill-draft.py - │ └─ claude -p ─────────→ Meta/Promotions/ (構造化ドラフト) - └─ session-summarizer - └─ claude -p ─────────→ Daily note ### 要約 (AI) - -Meta/Promotions/ → [人間がレビュー] → /promote → References/ または Ideas/ - (Projects/ は手動のみ) -``` +## なぜ便利か -**昇格レベル** (harvest.py): +- Claude Code セッションからの知識キャプチャを摩擦なく実現 +- AI 生成コンテンツを構造化 vault ルールに揃える +- 破壊的なシェル/ファイル操作の誤実行を防止 +- 日次、週次、月次、セッション要約の自動化 +- 最終保存前にドラフトのレビューを明示化 -| レベル | スコア | 自動昇格先 | -|--------|--------|-----------| -| L1 | ≥ 3(短いセッション ≤5 プロンプトは ≥ 2) | `Ideas/` | -| L2 | ≥ 6 | `Meta/Promotions/` | -| L3 | ≥ 9 | `References/` 自動ドラフト + Daily リンク | +## 主要な機能 -## リポジトリ構成 +- `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop`, `SessionEnd` 用のフック配線 +- `scripts/session-memory.sh` によるプロンプト・ツールキャプチャ +- `scripts/harvest.py` のキュー/ワーカー/フラッシュパイプライン +- `scripts/distill.py`/`scripts/distill-draft.py` によるドラフト蒸留 +- `scripts/promote.py` による昇格ワークフロー +- `scripts/` 以下の vault 保護用ガードレールスクリプト +- Claude Code 用プラグインマニフェスト、エージェントプロンプト、コマンド、スキル -| パス | 役割 | -|------|------| -| [`CLAUDE.md`](./CLAUDE.md) | 運用ルール・vault 規約・AI 動作指針 | -| [`hooks/hooks.json`](./hooks/hooks.json) | セッションライフサイクルのフック設定 | -| [`hooks/pre-commit`](./hooks/pre-commit) | pre-commit ガード(vault アーティファクトやデバッグファイルをブロック) | -| [`scripts/`](./scripts) | harvest・distill・セッション記録・バリデーション用スクリプト群 | -| [`agents/`](./agents) | `claude -p` サブプロセス向けシステムプロンプト定義 | -| [`commands/`](./commands) | スラッシュコマンド: `/status` `/logs` `/distill` `/promote` `/note` | -| [`skills/`](./skills) | Obsidian ワークフロー向けドメインヘルパー | -| [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json) | プラグインマニフェスト | -| [`settings.json.example`](./settings.json.example) | 環境変数テンプレート | - -## セットアップ +## はじめに ### 前提条件 - macOS または Linux -- ローカルプラグインを使える Claude Code -- `jq` と `python3` -- Obsidian vault([`masuda-so/Template-Vault`](https://github.com/masuda-so/Template-Vault) 構成を推奨) +- ローカルプラグイン対応の Claude Code +- `jq` がインストールされていること +- `python3` が `PATH` 上にあること +- 互換性のある Obsidian vault -### 1. クローン +### 1. リポジトリをクローン ```bash git clone https://github.com/masuda-so/second-brain.git cd second-brain ``` -### 2. init を実行 +### 2. vault パスを設定 + +次のコマンドを実行します。 ```bash ./scripts/init.sh "/path/to/your/Obsidian Vault" ``` -`init.sh` が行うこと: +このセットアップでは次を行います。 -1. `jq` と `python3` の確認 -2. `SECOND_BRAIN_VAULT_PATH` を `.claude/settings.local.json` に書き込み、`CLAUDE.md` もパッチ -3. スクリプトに `chmod +x` -4. pre-commit フックのシンリンクを設置(`.git/hooks/pre-commit → hooks/pre-commit`) -5. フックと `CLAUDE_PLUGIN_ROOT` を `.claude/settings.local.json` に登録(Plugin hooks install) -6. `hooks/hooks.json` の検証 -7. vault フォルダ構成の確認 -8. `Templates/` へのスターターテンプレート同期 +- `jq` と `python3` を検証 +- `SECOND_BRAIN_VAULT_PATH` を `.claude/settings.local.json` に書き込み +- `CLAUDE.md` を vault パスでパッチ +- git pre-commit フックをインストール +- ローカル設定にプラグインフックを登録 +- フックの配線と vault 構成を検証 +- `Templates/` にスターターテンプレートを同期 ### 3. Claude Code で開く -このディレクトリを Claude Code プロジェクトとして開きます。初回セッションからフックが自動で動作します。 +このリポジトリを Claude Code プロジェクトとして開きます。 +プラグインマニフェストやフック、コマンド、スキルが自動的に検出されます。 -## 設定 +### 4. ビルトインコマンドを使う -環境変数は `.claude/settings.local.json`(マシンローカル・非コミット)で管理します。 +Claude Code 内で次のコマンドを使います。 -| 変数 | 用途 | 既定値 | -|------|------|--------| -| `SECOND_BRAIN_VAULT_PATH` | Obsidian vault の絶対パス | 必須 | -| `SECOND_BRAIN_DAILY_DIR` | Daily ノートの保存先 | `Daily` | -| `SECOND_BRAIN_SESSION_DIR` | AI セッションログの保存先 | `Meta/AI Sessions` | -| `SECOND_BRAIN_CAPTURE_STRICT` | `1` でキャプチャ失敗をエラー扱い(既定は fail-open) | `0` | +- `/status` — プラグイン状態とセッションの健康を確認 +- `/logs` — 最近のフックとスクリプト出力を確認 +- `/promote` — `Meta/Promotions/` の承認済みドラフトを移動 -## ノートのライフサイクル +## リポジトリ構造 -``` -Ideas/ — 自動スケッチ、harvest_promoted: false(低スコア・未レビュー) -Meta/Promotions/ — 人間のレビュー待ちドラフト(reviewed_status: false) -References/ — 承認済みコンセプトノート -Projects/ — 手動のみ(自動書き込み禁止) -``` +| パス | 役割 | +|------|------| +| [`CLAUDE.md`](./CLAUDE.md) | 運用ルール、vault 規約、AI 振る舞い | +| [`hooks/hooks.json`](./hooks/hooks.json) | セッションフックの配線 | +| [`hooks/pre-commit`](./hooks/pre-commit) | vault 安全のための Git ガードフック | +| [`scripts/`](./scripts) | 主要なシェルおよび Python ユーティリティ | +| [`agents/`](./agents) | Claude エージェントプロンプト | +| [`commands/`](./commands) | オペレーターコマンドのドキュメント | +| [`skills/`](./skills) | Obsidian ワークフロー向けヘルパースキル | +| [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json) | Claude Code プラグインマニフェスト | +| [`settings.json.example`](./settings.json.example) | 環境設定の例 | -`Meta/Promotions/` のドラフトを昇格するには Claude Code 内で `/promote` を実行します。 +## 仕組み -## vault の出力先(既定) +セッションライフサイクルのフックがプロンプト、ツール、編集をキャプチャし、構造化ドラフトを生成します。 -``` -Daily/YYYY-MM-DD.md — ## AI Session にセッション要約が追記される -Meta/AI Sessions/YYYY-MM-DD/ — セッション ID ごとの生ログ -Meta/Promotions/draft-*.md — レビュー待ちの自動生成ドラフト -Ideas/ — 低閾値で自動昇格されたアイデア -References/ — 高確度のコンセプトスタブ -Weekly/YYYY-Www.md — SessionEnd で自動作成 -Monthly/YYYY-MM.md — SessionEnd で自動作成 -``` +- `SessionStart` はセッションコンテキスト、日次/週次ノートを初期化し、キャプチャを開始 +- `UserPromptSubmit` はプロンプトを記録し、ハーベストコンテンツをキューへ追加 +- `PreToolUse` は安全でないファイル・シェル操作をブロック +- `PostToolUse` は編集を検証し、ツール出力をキャプチャ +- `Stop` はハーベストワーカーを実行 +- `SessionEnd` はキューをフラッシュし、セッションノートを蒸留 + +## ノートライフサイクル -## ヘルプ +- `Ideas/` — 低スコアの自動スケッチ +- `Meta/Promotions/` — 人間のレビュー待ちドラフト +- `References/` — 高確度の昇格済みコンテンツ +- `Projects/` — 手動のみのプロジェクトノート -- [`CLAUDE.md`](./CLAUDE.md) — vault 規約・AI ルール・安全デフォルト -- [`commands/status.md`](./commands/status.md) — Claude Code 内からシステム状態を確認 -- [`commands/logs.md`](./commands/logs.md) — 最近のエラーとログ確認 +## 設定 + +ローカル設定は `.claude/settings.local.json` に保存します。主な環境変数: + +- `SECOND_BRAIN_VAULT_PATH` — 必須の絶対 vault パス +- `SECOND_BRAIN_DAILY_DIR` — 既定は `Daily` +- `SECOND_BRAIN_SESSION_DIR` — 既定は `Meta/AI Sessions` +- `SECOND_BRAIN_CAPTURE_STRICT` — `1` にするとフック失敗がエラー扱い + +## ヘルプとドキュメント + +- [`CLAUDE.md`](./CLAUDE.md) — 運用ガイドと vault ルール +- [`commands/status.md`](./commands/status.md) — ステータスコマンドのリファレンス +- [`commands/logs.md`](./commands/logs.md) — ログトラブルシュートのリファレンス - [`README.md`](./README.md) — 英語版 -問題が解決しない場合は、セットアップ手順と `./scripts/init.sh` の出力を添えて Issue を作成してください。 +問題がある場合は、セットアップ手順と `./scripts/init.sh` の出力を添えて Issue を作成してください。 ## メンテナーと貢献 -メンテナーは **masudaso** です。Issue と Pull Request を歓迎します。変更は小さく安全に保ち、ユーザーの vault を壊さないことを優先してください。 +メンテナーは **masudaso** です。 +Issue と Pull Request を歓迎します。変更は次の条件を満たすようにしてください。 + +- 小さくて可逆的 +- ユーザー vault に安全 +- `CLAUDE.md` のルールに沿っている +- セットアップやオペレーター動作に影響する場合はドキュメント化されている ## ライセンス -**MIT License** — 詳細は [`LICENSE`](./LICENSE) を参照してください。 +**MIT License** です。詳細は [`LICENSE`](./LICENSE) を参照してください。 diff --git a/README.md b/README.md index 02ba131..73062cf 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,43 @@ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![Status: Early Access](https://img.shields.io/badge/status-early%20access-blue.svg)](#) +[![Version: 0.2.0](https://img.shields.io/badge/version-0.2.0-lightgrey.svg)](#) [日本語版はこちら](./README.ja.md) # second-brain -`second-brain` is a local Claude Code plugin that turns your Obsidian vault into an autonomous Knowledge OS. Working with Claude Code is enough — notes accumulate on their own, structured to template conventions, without any manual capture effort. +A local Claude Code plugin that turns an Obsidian vault into an autonomous Knowledge OS. +This repository is the control layer: session capture, guardrails, structured note drafts, and promotion workflows. -> This repository is the **control layer**. Your Obsidian vault is the long-term memory store. +## What the project does -## Design principles +`second-brain` captures Claude Code session activity and uses it to generate structured Obsidian notes automatically. +It manages: -| Principle | Meaning | -|-----------|---------| -| **Zero-friction Capture** | No explicit note-taking. Working in Claude Code is enough for the vault to grow. | -| **Schema Enforcement** | AI output follows [`masuda-so/Template-Vault`](https://github.com/masuda-so/Template-Vault) and [`kepano/obsidian-skills`](https://github.com/kepano/obsidian-skills) structure — not free-form text. | -| **Human as a Filter** | AI writes; humans curate. Your only job is approve or delete drafts in `Meta/Promotions/`. | +- Claude Code hooks for session lifecycle events +- local plugin commands and agents for workflow control +- guard scripts that protect your vault from unsafe edits +- staged drafting and promotion into `Ideas/`, `Meta/Promotions/`, and `References/` -## How it works - -Three pipelines run automatically around your Claude Code session: +The Obsidian vault is the long-term memory store, while this repo orchestrates how notes are captured, reviewed, and promoted. -``` -Working in Claude Code - │ - ├─ session-memory.sh (always on) ──→ Meta/AI Sessions/ (raw log) - │ - ├─ harvest.py (hook-driven) - │ ├─ queue [UserPromptSubmit / PostToolUse] - │ ├─ worker [Stop] ────────────→ Ideas/ or Meta/Promotions/ - │ └─ flush [SessionEnd] ──────→ References/ auto-draft (L3) + Daily link - │ - └─ [SessionEnd] on-end-distill.sh - ├─ distill.py + distill-draft.py - │ └─ claude -p ───────────→ Meta/Promotions/ (structured draft) - └─ session-summarizer - └─ claude -p ───────────→ Daily note ### 要約 (AI) - -Meta/Promotions/ → [human review] → /promote → References/ or Ideas/ - (Projects/ is manual-only) -``` +## Why this project is useful -**Promotion levels** (harvest.py): +- Enables friction-free knowledge capture from Claude Code sessions +- Keeps AI-generated output aligned to structured vault conventions +- Prevents accidental destructive shell or file operations +- Automates daily, weekly, monthly, and session summaries +- Makes review explicit by staging draft content before final promotion -| Level | Score | Auto-target | -|-------|-------|-------------| -| L1 | ≥ 3 (≥ 2 in short sessions ≤ 5 prompts) | `Ideas/` | -| L2 | ≥ 6 | `Meta/Promotions/` | -| L3 | ≥ 9 | `References/` auto-draft + Daily link | +## Key features -## Repository layout - -| Path | Purpose | -|------|---------| -| [`CLAUDE.md`](./CLAUDE.md) | Operating constitution, vault rules, AI behaviour | -| [`hooks/hooks.json`](./hooks/hooks.json) | Hook wiring for the session lifecycle | -| [`hooks/pre-commit`](./hooks/pre-commit) | Pre-commit guard (blocks vault artifacts and debug files) | -| [`scripts/`](./scripts) | Shell and Python utilities — harvest, distill, session capture, validation | -| [`agents/`](./agents) | System-prompt files for `claude -p` sub-processes | -| [`commands/`](./commands) | Slash commands: `/status`, `/logs`, `/distill`, `/promote`, `/note` | -| [`skills/`](./skills) | Domain helpers for Obsidian workflows | -| [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json) | Plugin manifest | -| [`settings.json.example`](./settings.json.example) | Environment variable template | +- Hook wiring for `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop`, and `SessionEnd` +- Prompt and tool capture via `scripts/session-memory.sh` +- Harvest queue, worker, and flush pipeline in `scripts/harvest.py` +- Draft distillation with `scripts/distill.py` and `scripts/distill-draft.py` +- Promotion workflow with `scripts/promote.py` +- Observable vault guardrail scripts under `scripts/` +- Plugin manifest, agent prompts, commands, and skills for Claude Code ## Getting started @@ -69,90 +45,107 @@ Meta/Promotions/ → [human review] → /promote → References/ or Ideas/ - macOS or Linux - Claude Code with local plugin support -- `jq` and `python3` on your `PATH` -- An Obsidian vault ([`masuda-so/Template-Vault`](https://github.com/masuda-so/Template-Vault) structure recommended) +- `jq` installed +- `python3` available on `PATH` +- An Obsidian vault with a compatible note structure -### 1. Clone +### 1. Clone the repository ```bash git clone https://github.com/masuda-so/second-brain.git cd second-brain ``` -### 2. Run init +### 2. Configure your vault path + +Run the init helper with your vault location: ```bash ./scripts/init.sh "/path/to/your/Obsidian Vault" ``` -`init.sh` will: +This setup step: -1. Verify `jq` and `python3` -2. Write `SECOND_BRAIN_VAULT_PATH` to `.claude/settings.local.json` and patch `CLAUDE.md` -3. Fix script permissions (`chmod +x`) -4. Install the pre-commit hook symlink (`.git/hooks/pre-commit → hooks/pre-commit`) -5. Register hooks and `CLAUDE_PLUGIN_ROOT` into `.claude/settings.local.json` (Plugin hooks install) -6. Validate `hooks/hooks.json` -7. Check expected vault folders and structure -8. Sync starter templates into `Templates/` +- validates `jq` and `python3` +- writes `SECOND_BRAIN_VAULT_PATH` to `.claude/settings.local.json` +- patches `CLAUDE.md` for the vault path +- installs the git pre-commit hook +- registers plugin hooks into local settings +- validates hook wiring and vault structure +- syncs starter templates into `Templates/` ### 3. Open in Claude Code -Open this directory as your Claude Code project. The hooks fire automatically from the first session. +Open this repo as a Claude Code project. The plugin manifest, hooks, commands, and skills will be discovered automatically. -## Configuration +### 4. Use built-in commands + +In Claude Code, use commands such as: + +- `/status` — view plugin status and session health +- `/logs` — inspect recent hook and script output +- `/promote` — move approved drafts from `Meta/Promotions/` -Environment variables are read from `.claude/settings.local.json` (machine-local, never committed): +## Repository structure -| Variable | Purpose | Default | -|----------|---------|---------| -| `SECOND_BRAIN_VAULT_PATH` | Absolute path to your Obsidian vault | required | -| `SECOND_BRAIN_DAILY_DIR` | Daily notes folder | `Daily` | -| `SECOND_BRAIN_SESSION_DIR` | AI session log folder | `Meta/AI Sessions` | -| `SECOND_BRAIN_CAPTURE_STRICT` | `1` = hook failures are hard errors instead of fail-open | `0` | +| Path | Purpose | +|------|---------| +| [`CLAUDE.md`](./CLAUDE.md) | Operating rules, vault conventions, AI behaviour | +| [`hooks/hooks.json`](./hooks/hooks.json) | Session hook wiring | +| [`hooks/pre-commit`](./hooks/pre-commit) | Git guard hook for vault safety | +| [`scripts/`](./scripts) | Core shell and Python utilities | +| [`agents/`](./agents) | Claude agent prompts | +| [`commands/`](./commands) | Operator command documentation | +| [`skills/`](./skills) | Obsidian workflow helper skills | +| [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json) | Claude Code plugin manifest | +| [`settings.json.example`](./settings.json.example) | Example environment settings | + +## How it works + +Session lifecycle hooks capture prompts, tools, and edits, then surface structured drafts for review: + +- `SessionStart` initializes session context, daily/weekly notes, and starts capture +- `UserPromptSubmit` logs prompts and queues harvested content +- `PreToolUse` blocks unsafe file or shell operations +- `PostToolUse` validates edits and captures tool outputs +- `Stop` runs the harvest worker +- `SessionEnd` flushes queued content and distills session notes ## Note lifecycle -``` -Ideas/ — auto-sketches, harvest_promoted: false (low score, unreviewed) -Meta/Promotions/ — staged drafts waiting for human review (reviewed_status: false) -References/ — promoted, gate-cleared concept notes -Projects/ — manual only, no auto-write -``` +- `Ideas/` — low-score auto-sketches +- `Meta/Promotions/` — staged drafts awaiting human review +- `References/` — high-confidence promoted content +- `Projects/` — manual-only project notes -Run `/promote` inside Claude Code to move approved drafts from `Meta/Promotions/` to their target. +## Configuration -## Vault output (defaults) +Local configuration belongs in `.claude/settings.local.json`. Key environment variables: -``` -Daily/YYYY-MM-DD.md — session summary appended under ## AI Session -Meta/AI Sessions/YYYY-MM-DD/ — raw session log per session-id -Meta/Promotions/draft-*.md — auto-generated note drafts awaiting review -Ideas/ — low-threshold auto-promoted ideas -References/ — high-confidence concept stubs -Weekly/YYYY-Www.md — created automatically at SessionEnd -Monthly/YYYY-MM.md — created automatically at SessionEnd -``` +- `SECOND_BRAIN_VAULT_PATH` — required absolute vault path +- `SECOND_BRAIN_DAILY_DIR` — default `Daily` +- `SECOND_BRAIN_SESSION_DIR` — default `Meta/AI Sessions` +- `SECOND_BRAIN_CAPTURE_STRICT` — `1` makes hook failures fatal instead of fail-open -## Where to get help +## Help and documentation -- [`CLAUDE.md`](./CLAUDE.md) — vault conventions, AI rules, safety defaults -- [`commands/status.md`](./commands/status.md) — quick operational review from inside Claude Code -- [`commands/logs.md`](./commands/logs.md) — recent failures and log guidance -- [`README.ja.md`](./README.ja.md) — Japanese overview +- [`CLAUDE.md`](./CLAUDE.md) — main operating guide and vault rules +- [`commands/status.md`](./commands/status.md) — status command reference +- [`commands/logs.md`](./commands/logs.md) — log troubleshooting reference +- [`README.ja.md`](./README.ja.md) — Japanese README -If something looks wrong, open an issue with your setup steps and the output of `./scripts/init.sh`. +If you need help, open an issue with your setup details and the output from `./scripts/init.sh`. ## Maintainers and contributions Maintained by **masudaso**. -Contributions are welcome through issues and pull requests. Please keep changes: +Contributions are welcome via issues and pull requests. Prefer changes that are: - small and reversible -- aligned with the rules in [`CLAUDE.md`](./CLAUDE.md) -- safe for user vaults and secret material -- documented when they change operator behaviour or setup steps +- safe for user vaults +- aligned with `CLAUDE.md` rules +- documented when they affect setup or operator workflow ## License