kotonoha 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -1
- package/README-ja.md +21 -4
- package/README.md +34 -8
- package/package.json +1 -1
- package/skills/obsidian-markdown/SKILL.md +17 -1
- package/skills/obsidian-vault/SKILL.md +220 -23
- package/skills/obsidian-vault/references/workflow.md +117 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.7] - 2026-11-08
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Allow an approved tarball SHA-256 in the manual npm publishing workflow.
|
|
15
|
+
Pack once, verify the supplied hash and publish that exact archive; stop
|
|
16
|
+
before publishing if the artifact differs.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Use WSL-visible path, type and file-identity checks for normal OneDrive host
|
|
21
|
+
reads/saves instead of requiring Windows reparse-tag or final-path APIs.
|
|
22
|
+
Cloud reparse metadata alone no longer blocks WSL operations. Keep detected
|
|
23
|
+
redirection/access denials, source rechecks and in-place updates; retain
|
|
24
|
+
native Windows tag verification and unchanged Python CLI/Canvas/Bases gates.
|
|
25
|
+
|
|
26
|
+
## [0.5.6] - 2026-11-07
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- Allow authorized host directory creation and regular-file creation, editing
|
|
31
|
+
and deletion, including verified OneDrive paths. Require exact path/action
|
|
32
|
+
authority, non-overwriting creation, source rechecks and verified deletion.
|
|
33
|
+
Disclose synced deletion and uncertain recovery; exclude directory deletion,
|
|
34
|
+
recursive removal, moves and renames. Retain dedicated content save gates.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- Allow host saves on verified non-redirecting OneDrive cloud paths, including
|
|
39
|
+
native Windows and WSL, instead of rejecting every reparse point. Retain
|
|
40
|
+
identity, in-place updates, attribute preservation and hydration consent.
|
|
41
|
+
- Add an explicitly authorized host import workflow for PDF downloads and local
|
|
42
|
+
Docling outputs in the selected Vault directory. Require exact output paths,
|
|
43
|
+
non-overwriting creation, scoped scratch/directory consent and per-artifact
|
|
44
|
+
verification. Keep Python CLI, Canvas and Bases storage support unchanged.
|
|
45
|
+
|
|
10
46
|
## [0.5.5] - 2026-11-06
|
|
11
47
|
|
|
12
48
|
### Fixed
|
|
@@ -284,4 +320,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
284
320
|
[0.5.3]: https://github.com/nahisaho/kotonoha/compare/d665884...v0.5.3
|
|
285
321
|
[0.5.4]: https://github.com/nahisaho/kotonoha/compare/v0.5.3...v0.5.4
|
|
286
322
|
[0.5.5]: https://github.com/nahisaho/kotonoha/compare/v0.5.4...v0.5.5
|
|
287
|
-
[
|
|
323
|
+
[0.5.6]: https://github.com/nahisaho/kotonoha/compare/v0.5.5...v0.5.6
|
|
324
|
+
[0.5.7]: https://github.com/nahisaho/kotonoha/compare/v0.5.6...v0.5.7
|
|
325
|
+
[Unreleased]: https://github.com/nahisaho/kotonoha/compare/v0.5.7...HEAD
|
package/README-ja.md
CHANGED
|
@@ -6,7 +6,7 @@ kotonohaは、GitHub CopilotとClaude Code向けのスキルを提供します
|
|
|
6
6
|
|
|
7
7
|
Obsidian向けには、Markdown記法、許可されたVault内のノート操作、JSON Canvas、Bases、公式アプリCLIを扱います。DefuddleによるWeb・HTML本文の抽出と、KnapによるJSON・CSVからのテンプレート生成にも対応します。操作ごとに、参照範囲・依存関係・保存の許可を確認します。
|
|
8
8
|
|
|
9
|
-
バージョンは **0.5.
|
|
9
|
+
バージョンは **0.5.7** です(2026-11-08更新)。`obsidian-markdown`、`obsidian-cli`、`defuddle`、`knap`を含む11のスキルを同梱しています。npmパッケージを使うか、[ソースからスキルを導入する手順](#このチェックアウトからスキルを導入)を参照してください。
|
|
10
10
|
|
|
11
11
|
[English](./README.md) | [日本語](./README-ja.md)
|
|
12
12
|
|
|
@@ -71,7 +71,7 @@ Obsidianでは、[`obsidian.md`](skills/tech-writer/assets/templates/obsidian.md
|
|
|
71
71
|
|
|
72
72
|
Markdownノートとテンプレートの作成・編集は`obsidian-markdown`が担当します。
|
|
73
73
|
文書構成にはtech-writer、日本語の校正にはjapanese-proseを利用します。
|
|
74
|
-
`obsidian-vault
|
|
74
|
+
`obsidian-vault`は、許可範囲のローカル読み取り・静的検証・確定済み候補の保存、明示許可されたファイル・ディレクトリ操作と成果物の取り込みを担う共用基盤です。
|
|
75
75
|
直接保存はホストのファイルツールを使うため、Python、uv、専用CLIの計画ファイルは不要です。
|
|
76
76
|
Obsidianアプリ、MCP、プラグインにも依存しません。
|
|
77
77
|
|
|
@@ -101,11 +101,28 @@ Linuxでは所有者・グループ・権限を維持します。
|
|
|
101
101
|
既存ノートは置換せず同じ実体へ書き込み、WindowsのACL・属性を保持します。仮想的なLinux権限だけでは拒否しません。
|
|
102
102
|
ネットワーク共有は対象外とし、パス・実体・保存後のバイト列を検証します。保存方式が不明な編集ツールは使いません。
|
|
103
103
|
`/tmp`等への別出力を、許可済みVaultの更新の代わりにはしません。
|
|
104
|
+
WSLのOneDrive保存は、WSLのパス解決・要素の型・ファイル実体の確認を使います。cloud再解析属性はWSLのシンボリックリンクではありません。
|
|
105
|
+
通常のWSLファイルにWindows再解析タグ取得や最終パスAPIを要求せず、取得機能がないことだけでは保存を拒否しません。
|
|
106
|
+
ネイティブWindowsではcloudタグ検証を維持します。検出した転送・リンク・範囲外への逸脱と実際の権限拒否は引き続き拒否します。
|
|
107
|
+
オンライン専用と判明したファイルのローカル取得通信には別途同意が必要です。
|
|
104
108
|
Python CLI・Canvas・Basesの対応範囲は広げません。CLIでは引き続きWSLのWindowsドライブや拡張属性付き対象を拒否します。
|
|
105
109
|
SELinuxラベルなどの削除を回避策にしません。
|
|
106
110
|
直接編集はCLIの原子的確定、ルートロック、成功記録による再実行保護を利用しません。
|
|
107
111
|
保存後に読み戻して確認しますが、途中失敗や同時編集の完全な防止は保証しません。
|
|
108
112
|
LLMの誤判断を完全には防げず、ホストを隔離する機能でもありません。
|
|
113
|
+
WSLのホストから見えるパス確認はWindows再解析情報の独立監査ではなく、検出不能な転送がないことを保証しません。
|
|
114
|
+
|
|
115
|
+
ホストツールでは、Markdown・PDFに限らず、明示指定したディレクトリの作成と通常ファイルの作成・編集・削除も行えます。
|
|
116
|
+
正確な対象・操作への許可を確認し、ワイルドカードの一括指定は範囲内で列挙した全対象を承認してから実行します。
|
|
117
|
+
作成は非上書き、編集は原文・実体の再照合、削除は対象・ハッシュの直前照合と削除後の不在確認を必須とします。
|
|
118
|
+
OneDriveの削除は他の端末へ同期され得ます。復旧は保証せず、ディレクトリ削除・再帰削除・移動・改名は対象外です。
|
|
119
|
+
Markdown校正とCanvas・Basesの保存検査は維持し、Python CLIに新しい操作コマンドは追加しません。
|
|
120
|
+
|
|
121
|
+
明示指定したPDFのダウンロードとローカルDocling変換成果物は、検証済みのOneDriveを含むVault内作業ディレクトリへ取り込めます。
|
|
122
|
+
取得元・通信・変換への許可と全出力先を確認し、作業ディレクトリ指定だけでは書き込みません。
|
|
123
|
+
非上書き作成と保存先・属性検査を使い、新規フォルダー、追加出力、補助ファイルには正確な場所への別途同意が必要です。
|
|
124
|
+
Doclingは任意導入であり、同梱・自動導入しません。取得と変換を個別に検証し、成果物のパスとハッシュを報告します。
|
|
125
|
+
詳しくは[取り込み手順](skills/obsidian-vault/references/workflow.md#pdfdocling変換成果物の取り込み)を参照してください。
|
|
109
126
|
|
|
110
127
|
## Obsidian Canvasの操作
|
|
111
128
|
|
|
@@ -140,7 +157,7 @@ Node 18以上と固定依存が必要です。依存の準備は別途許可を
|
|
|
140
157
|
|
|
141
158
|
## Obsidian記法・アプリ操作・データからのノート生成
|
|
142
159
|
|
|
143
|
-
0.5.
|
|
160
|
+
0.5.7は、[kepano/obsidian-skills](https://github.com/kepano/obsidian-skills)の6つの機能分野を、kotonoha独自の手順と例で扱います。
|
|
144
161
|
参照した版は[`3ccff5338ea700537839b21900aa5358a0402c98`](https://github.com/kepano/obsidian-skills/tree/3ccff5338ea700537839b21900aa5358a0402c98)です(2026-11-05確認)。
|
|
145
162
|
対応する実行環境や保存方法が参照先と同一という意味ではありません。既存のCanvas・Basesの検査範囲と保存制約を維持します。
|
|
146
163
|
|
|
@@ -284,7 +301,7 @@ npx kotonoha install --skill all
|
|
|
284
301
|
```
|
|
285
302
|
|
|
286
303
|
`--skill all`が既定値であるため、`npx kotonoha install`も同じ動作です。導入できるスキルは、使用したパッケージに依存します。
|
|
287
|
-
0.5.
|
|
304
|
+
0.5.7には11のスキルを同梱しています。導入先プロジェクトで、すべて配置されたことを確認します。
|
|
288
305
|
|
|
289
306
|
```bash
|
|
290
307
|
test -f .github/skills/consulting-analyst/SKILL.md
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ The Obsidian suite covers Markdown syntax, authorized Vault notes, JSON Canvas,
|
|
|
14
14
|
Bases, official app commands, web/HTML extraction and JSON/CSV template rendering.
|
|
15
15
|
Each workflow keeps its own scope, dependency and save requirements.
|
|
16
16
|
|
|
17
|
-
Version: **0.5.
|
|
17
|
+
Version: **0.5.7** (updated 2026-11-08), with eleven bundled Skills, including
|
|
18
18
|
`obsidian-markdown`, `obsidian-cli`, `defuddle` and `knap`.
|
|
19
19
|
Install the npm package or use the
|
|
20
20
|
[source-checkout installation](#install-skills-from-this-source-checkout).
|
|
@@ -132,8 +132,9 @@ for setup, placeholder handling, and limitations.
|
|
|
132
132
|
|
|
133
133
|
Use `obsidian-markdown` to create or edit Markdown notes and templates. It uses
|
|
134
134
|
`tech-writer` for structure and coordinates Japanese proofreading with
|
|
135
|
-
`japanese-prose`. `obsidian-vault` is
|
|
136
|
-
|
|
135
|
+
`japanese-prose`. `obsidian-vault` is the shared backend for scoped local reads,
|
|
136
|
+
static validation, saving an already prepared candidate, authorized file/directory
|
|
137
|
+
operations and artifact imports.
|
|
137
138
|
Its direct-save path uses host file tools without Python, uv, Obsidian, MCP
|
|
138
139
|
or plugins.
|
|
139
140
|
|
|
@@ -174,8 +175,13 @@ for requests, command examples, data retention and recovery.
|
|
|
174
175
|
|
|
175
176
|
Saving requires verifiable local regular files; symlinks and multiple hard
|
|
176
177
|
links are refused. Native Linux saves preserve ownership/modes.
|
|
177
|
-
Host direct saves also support confirmed local Windows drives
|
|
178
|
-
(`drvfs`/`9p`/`v9fs`), not network shares.
|
|
178
|
+
Host direct saves also support native Windows and confirmed local Windows drives
|
|
179
|
+
through WSL (`drvfs`/`9p`/`v9fs`), not network shares. WSL OneDrive saves use
|
|
180
|
+
WSL-resolved paths, component types and file identity; cloud reparse metadata
|
|
181
|
+
is not a WSL symlink. Windows tag/final-path APIs are not required for otherwise
|
|
182
|
+
normal WSL files. Native Windows retains cloud-tag verification. Detected
|
|
183
|
+
redirections, symlinks, scope escapes and actual access denials remain blocked;
|
|
184
|
+
known hydration requires separate consent. Existing notes must be updated in place,
|
|
179
185
|
preserving Windows ACLs/attributes rather than replacing the file or requiring
|
|
180
186
|
synthetic Linux permissions. Path/identity checks and exact readback remain
|
|
181
187
|
mandatory; an unknown host replacement method is not sufficient.
|
|
@@ -185,7 +191,27 @@ CLI saving still requires a verified Linux filesystem and refuses all xattrs,
|
|
|
185
191
|
including SELinux labels. Never remove attributes to bypass a refusal.
|
|
186
192
|
Direct-edit failure and concurrency limitations are disclosed before saving;
|
|
187
193
|
neither mode eliminates post-check external edits or LLM mistakes.
|
|
188
|
-
The skill is not a host sandbox.
|
|
194
|
+
The skill is not a host sandbox. WSL host-visible checks are not an independent
|
|
195
|
+
Windows reparse audit or a guarantee against undetectable redirections.
|
|
196
|
+
|
|
197
|
+
Host operations also allow explicitly authorized directory creation and
|
|
198
|
+
regular-file creation, editing and deletion, not just Markdown/PDF outputs.
|
|
199
|
+
Each exact path/action needs authority; wildcard batches need approval after
|
|
200
|
+
scoped enumeration. Creation is non-overwriting, edits recheck source bytes and
|
|
201
|
+
identity, and deletion rechecks the exact file/hash then verifies absence.
|
|
202
|
+
OneDrive may sync deletions to other devices; recovery is not guaranteed.
|
|
203
|
+
Directory deletion, recursive removal, moves and renames remain outside this
|
|
204
|
+
workflow. Markdown proofreading and dedicated Canvas/Bases write gates remain
|
|
205
|
+
in force; the Python CLI gains no new commands.
|
|
206
|
+
|
|
207
|
+
Explicit PDF downloads and local Docling conversion outputs can be imported into
|
|
208
|
+
the authorized Vault working directory, including verified OneDrive paths.
|
|
209
|
+
Source/network/conversion authority and every output path must be specified;
|
|
210
|
+
directory selection alone grants no write permission. Imports use non-overwriting
|
|
211
|
+
creation and the same path/attribute checks, with separate consent for exact new
|
|
212
|
+
directories, sidecars and scratch locations. Docling is optional, not bundled or
|
|
213
|
+
auto-installed. Downloads and conversion are verified and reported separately
|
|
214
|
+
with output paths/hashes; Python CLI, Canvas and Bases support is unchanged.
|
|
189
215
|
|
|
190
216
|
## Working with Obsidian Canvas
|
|
191
217
|
|
|
@@ -232,7 +258,7 @@ for exact-byte preservation, four original templates and failure handling.
|
|
|
232
258
|
|
|
233
259
|
## Obsidian syntax, app commands and data-driven notes
|
|
234
260
|
|
|
235
|
-
The 0.5.
|
|
261
|
+
The 0.5.7 Skills cover all six capability families in
|
|
236
262
|
[kepano/obsidian-skills](https://github.com/kepano/obsidian-skills), with original
|
|
237
263
|
kotonoha instructions and examples. Reference snapshot:
|
|
238
264
|
[`3ccff5338ea700537839b21900aa5358a0402c98`](https://github.com/kepano/obsidian-skills/tree/3ccff5338ea700537839b21900aa5358a0402c98),
|
|
@@ -424,7 +450,7 @@ npx kotonoha install --skill all
|
|
|
424
450
|
```
|
|
425
451
|
|
|
426
452
|
`--skill all` is the default, so `npx kotonoha install` has the same behavior.
|
|
427
|
-
The selected package determines which Skills are available; version 0.5.
|
|
453
|
+
The selected package determines which Skills are available; version 0.5.7
|
|
428
454
|
includes all eleven. In the destination project, confirm they were installed:
|
|
429
455
|
|
|
430
456
|
```bash
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kotonoha",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.7",
|
|
4
4
|
"description": "Skills for GitHub Copilot and Claude Code: consulting, technical writing, Japanese prose, Obsidian Markdown, Canvas, Bases and CLI, Defuddle, Knap, and PPTX planning.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "nahisaho",
|
|
@@ -27,6 +27,10 @@ Coordinate content and review, not a second storage backend. Read the
|
|
|
27
27
|
Preserve the selected direct-save or optional plan-approved workflow.
|
|
28
28
|
For a WSL local Windows drive, use its host direct-save profile; do not
|
|
29
29
|
reject `v9fs` alone or route a normal content edit through Python CLI planning.
|
|
30
|
+
WSL OneDrive targets use WSL path/type/identity checks, not native Windows
|
|
31
|
+
reparse-tag or final-path API requirements. Missing Windows metadata tools
|
|
32
|
+
alone must not block a normal WSL OneDrive save. Native Windows uses the
|
|
33
|
+
backend's separate tag-verification profile.
|
|
30
34
|
Do not silently substitute `/tmp` output for the authorized Vault target.
|
|
31
35
|
If it is unavailable, report the missing sibling and provide an unsaved draft.
|
|
32
36
|
- Use `tech-writer` for note structure and its existing
|
|
@@ -36,6 +40,17 @@ Coordinate content and review, not a second storage backend. Read the
|
|
|
36
40
|
storage backend to draft or correct content.
|
|
37
41
|
- Route `.canvas` to `obsidian-canvas` and standalone `.base` to
|
|
38
42
|
`obsidian-bases`. Do not replace their checkers with Markdown validation.
|
|
43
|
+
- Explicit PDF downloads and Docling extraction use `obsidian-vault`'s host
|
|
44
|
+
artifact-import workflow with separate source/network/output authority.
|
|
45
|
+
A normal note edit does not authorize imports. Do not block an authorized
|
|
46
|
+
import merely because its outputs are in a Vault or verified OneDrive path.
|
|
47
|
+
Keep raw extraction separate from requested note authoring and proofreading;
|
|
48
|
+
neither Defuddle nor Knap is a PDF converter.
|
|
49
|
+
- Route explicitly requested directory creation or file deletion to
|
|
50
|
+
`obsidian-vault`'s host file/directory workflow with exact paths/actions and
|
|
51
|
+
user authority. A note save can create missing parents only when those exact
|
|
52
|
+
directory paths are also authorized. Do not infer deletion or attachment
|
|
53
|
+
mutation from a content edit, and do not automatically repair deleted links.
|
|
39
54
|
- The official application CLI is a separate, explicitly selected
|
|
40
55
|
`obsidian-cli` workflow, not an automatic fallback for a refused save.
|
|
41
56
|
When it supplies authorized source text, return the candidate and applicable
|
|
@@ -101,7 +116,8 @@ Vault-relative paths. Never save any operation files in session storage,
|
|
|
101
116
|
including `~/.copilot/session-state/`, and pass this rule to delegated tools.
|
|
102
117
|
Auxiliary copies require a separately consented non-session location; otherwise
|
|
103
118
|
keep the draft in the conversation. Target authority never grants whole-Vault
|
|
104
|
-
access, folder creation or attachment changes.
|
|
119
|
+
access, folder creation or attachment changes. Those operations need separate
|
|
120
|
+
exact-path/action authority through the backend's host file/directory workflow.
|
|
105
121
|
|
|
106
122
|
Report draft-only, reviewed or handed-off status and the unperformed checks.
|
|
107
123
|
Do not claim a save based on a draft or an unexecuted handoff.
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: obsidian-vault
|
|
3
3
|
description: >-
|
|
4
|
-
Provides scoped local reads, static validation
|
|
5
|
-
saving
|
|
4
|
+
Provides scoped local reads, static validation, candidate-only Markdown
|
|
5
|
+
saving, directory creation, regular-file creation/editing/deletion and
|
|
6
|
+
authorized PDF/conversion artifact imports, including verified local
|
|
7
|
+
OneDrive paths. Use for explicit local storage operations or a
|
|
6
8
|
sibling's authorized read/validate/save handoff, not content generation.
|
|
7
9
|
Preserves consent, paths, metadata and source identity, with optional
|
|
8
10
|
plan-approved saving. Also supplies Canvas storage API version 1.
|
|
9
11
|
Requires no Obsidian app, official CLI, MCP or plugins.
|
|
10
12
|
license: MIT
|
|
11
|
-
argument-hint: "[read|validate|save] <authorized
|
|
13
|
+
argument-hint: "[read|validate|save|mkdir|create|edit|delete|import] <authorized targets>"
|
|
12
14
|
---
|
|
13
15
|
|
|
14
16
|
# obsidian-vault
|
|
15
17
|
|
|
16
18
|
Own local storage, not note content. Read authorized bytes, return static
|
|
17
19
|
validation evidence, and save an already prepared candidate without changing
|
|
18
|
-
it.
|
|
20
|
+
it. Also perform explicitly authorized directory creation and regular-file
|
|
21
|
+
creation, editing or deletion through the host workflow below.
|
|
22
|
+
See [workflow.md](references/workflow.md) for the handoff contract, CLI
|
|
19
23
|
compatibility fields, diagnostic limits and recovery.
|
|
20
24
|
|
|
21
25
|
## Responsibility boundary
|
|
@@ -32,6 +36,9 @@ to the explicitly selected `obsidian-cli` workflow. Do not silently launch the
|
|
|
32
36
|
app, broaden scope, switch after failure or bypass a refused save.
|
|
33
37
|
`defuddle` and `knap` prepare candidates outside the Vault; note-level
|
|
34
38
|
integration belongs to `obsidian-markdown`, not this backend.
|
|
39
|
+
Explicit PDF downloads and local Docling conversion outputs use the separate
|
|
40
|
+
host artifact-import workflow below, not Defuddle, Knap or Python CLI saving.
|
|
41
|
+
The caller owns fetching/conversion; this backend owns scoped output storage.
|
|
35
42
|
|
|
36
43
|
Retain `STORAGE_API_VERSION=1`, authorized reads/enumeration, parsing helpers
|
|
37
44
|
and `commit_bytes` for `obsidian-canvas`. Its own plan/apply workflow remains
|
|
@@ -41,13 +48,15 @@ as static validation data, never inferred rules, recommendations or repairs.
|
|
|
41
48
|
|
|
42
49
|
## Candidate handoff
|
|
43
50
|
|
|
44
|
-
For saving, require the caller to supply the absolute Vault root, authorized read/model
|
|
51
|
+
For content saving, require the caller to supply the absolute Vault root, authorized read/model
|
|
45
52
|
scopes, exact target, creation versus replacement, original bytes/hash for an
|
|
46
53
|
edit, exact candidate, allowed change, save mode and actual save authority.
|
|
47
54
|
Also carry the working directory, auxiliary-copy consent and applicable
|
|
48
55
|
proofreading review. Ask only for missing storage details, one at a time.
|
|
49
56
|
Do not author missing content or infer authority from a sibling's draft.
|
|
50
57
|
Return a refused candidate unchanged to its caller; never repair it to pass.
|
|
58
|
+
Directory creation and file deletion use the operation handoff below; neither
|
|
59
|
+
requires a fabricated content candidate or a Markdown CLI plan.
|
|
51
60
|
|
|
52
61
|
## Scope and consent
|
|
53
62
|
|
|
@@ -70,7 +79,13 @@ write or CLI filesystem requirements to a read. Do not enumerate a parent
|
|
|
70
79
|
folder or read sibling documents merely to open an already specified file;
|
|
71
80
|
parent metadata checks do not authorize parent content access.
|
|
72
81
|
|
|
73
|
-
On
|
|
82
|
+
On WSL Windows drives, use the WSL host path/type/identity checks described in
|
|
83
|
+
the direct-save profile below for authorized reads too. Windows cloud reparse
|
|
84
|
+
metadata is not a WSL symlink. Do not require Windows reparse-tag queries or
|
|
85
|
+
Windows final-path APIs when WSL resolves the authorized path and exposes a
|
|
86
|
+
regular file; their absence alone must not block the read.
|
|
87
|
+
|
|
88
|
+
On native Windows, a OneDrive folder name or the
|
|
74
89
|
`FILE_ATTRIBUTE_REPARSE_POINT` flag alone is not grounds to refuse reading.
|
|
75
90
|
Inspect the actual reparse tag for each flagged component from root to target.
|
|
76
91
|
Allow only verified Windows cloud-family tags (`IO_REPARSE_TAG_CLOUD` and its
|
|
@@ -80,10 +95,13 @@ Reject symlinks, junctions, mount-point redirections, unknown tags and scope
|
|
|
80
95
|
escapes. Missing tag/final-path verification blocks the affected read; report
|
|
81
96
|
the exact path and missing capability rather than declaring all OneDrive unsafe.
|
|
82
97
|
|
|
83
|
-
Read only locally available regular-file bytes. Before opening
|
|
98
|
+
Read only locally available regular-file bytes. Before opening a known online-only
|
|
84
99
|
or recall-on-access placeholder, obtain explicit consent for hydration/network
|
|
85
|
-
access; if
|
|
86
|
-
|
|
100
|
+
access; if metadata or host warnings indicate recall risk and availability
|
|
101
|
+
cannot be established, stop before a potentially hydrating read. A normal WSL
|
|
102
|
+
file read does not need a separate Windows cloud-availability query merely
|
|
103
|
+
because a parent is in OneDrive. Do not change cloud attributes, pin files,
|
|
104
|
+
change sync settings
|
|
87
105
|
or create copies to force access. Respect ACL denials, host tool refusals and
|
|
88
106
|
content-exclusion policies; never retry through another tool to bypass them.
|
|
89
107
|
Check the source identity and change metadata around the read and report
|
|
@@ -92,7 +110,7 @@ concurrent changes rather than presenting unstable content as verified.
|
|
|
92
110
|
Once these checks pass, read each authorized document independently; one blocked
|
|
93
111
|
file does not block other verified targets. Report which documents were actually
|
|
94
112
|
read and the specific reason for any unread document. Read permission does not
|
|
95
|
-
grant save permission: the
|
|
113
|
+
grant save permission: apply the save profiles below with separate write authority.
|
|
96
114
|
|
|
97
115
|
## Working directory and copies
|
|
98
116
|
|
|
@@ -108,8 +126,9 @@ This includes deliverables, requests, originals, candidates, diffs, diagnostics,
|
|
|
108
126
|
reviews, plans, receipts, results and temporary files. Check resolved locations
|
|
109
127
|
before writing; if the working directory or any selected output is in session
|
|
110
128
|
storage, stop and ask for a non-session location. Do not use it as a fallback.
|
|
111
|
-
Stop on out-of-scope
|
|
112
|
-
|
|
129
|
+
Stop on out-of-scope or ambiguous targets; do not substitute another location.
|
|
130
|
+
For missing parents, use the directory-creation workflow below only with explicit
|
|
131
|
+
authorization for each exact directory; otherwise stop.
|
|
113
132
|
|
|
114
133
|
Direct editing needs no external copies or plan files. For necessary auxiliary
|
|
115
134
|
files, use a suitable consented location in the current or user-specified
|
|
@@ -140,15 +159,19 @@ not performed, not an unverified substitute.
|
|
|
140
159
|
changes; never overwrite from stale content. Identical bytes mean no write.
|
|
141
160
|
5. Save the exact candidate with host tools. On native Linux filesystems,
|
|
142
161
|
preserve owner/group/modes and refuse xattrs or unsupported attributes.
|
|
143
|
-
For
|
|
162
|
+
For Windows drives, select the matching WSL or native Windows direct-save
|
|
163
|
+
profile below instead; do not apply native Windows checks to WSL.
|
|
144
164
|
Both profiles refuse multiple hard links and attribute-removing workarounds,
|
|
145
165
|
including removal of SELinux labels.
|
|
146
166
|
6. Read back after saving; require exact candidate bytes and unchanged unspecified content.
|
|
147
167
|
Report the exact target and outcome, never success on failure or uncertainty.
|
|
148
168
|
|
|
149
169
|
Preserve unspecified frontmatter, links, code, numbers, identifiers, encoding and
|
|
150
|
-
newlines; no unsolicited reformatting.
|
|
151
|
-
renames, attachments or other
|
|
170
|
+
newlines; no unsolicited reformatting. Markdown candidate saving does not
|
|
171
|
+
authorize folder creation, deletion, moves, renames, attachments or other
|
|
172
|
+
formats; explicit file/directory operations and artifact imports have their own
|
|
173
|
+
authorization below.
|
|
174
|
+
Proofreading still needs the gate below.
|
|
152
175
|
Before saving, disclose that direct edits lack CLI root locking, atomic commit,
|
|
153
176
|
plan-hash approval and receipt replay protection. Report only verified readback,
|
|
154
177
|
not invented CLI JSON/receipts. If the user needs CLI guarantees, await selection.
|
|
@@ -160,14 +183,38 @@ the target first when its save state is unknown.
|
|
|
160
183
|
Support authorized Markdown saves on a confirmed local Windows drive mounted
|
|
161
184
|
through WSL as `drvfs`, `9p` or `v9fs`. Do not reject it solely because of that
|
|
162
185
|
filesystem name or apply the Python CLI's filesystem allowlist to host saves.
|
|
186
|
+
WSL OneDrive saves are supported when the authorized target is exposed as a
|
|
187
|
+
normal WSL file. OneDrive cloud reparse metadata, including on parent directories,
|
|
188
|
+
is not a WSL symbolic link and is not itself a path redirection.
|
|
189
|
+
Native Windows uses the separate tag-verification profile below.
|
|
163
190
|
This profile does not extend Python CLI, Canvas or Bases saving support.
|
|
164
191
|
|
|
165
192
|
1. Verify WSL, the actual mount and its Windows path mapping; a `/mnt/c/...`
|
|
166
|
-
spelling alone is not evidence.
|
|
167
|
-
|
|
193
|
+
spelling alone is not evidence. Use the actual WSL mount metadata and path
|
|
194
|
+
mapping to identify the local Windows drive, not a mapped network drive or
|
|
195
|
+
UNC/SMB share. Do not require PowerShell, fsutil or Windows drive APIs to
|
|
196
|
+
repeat a local-drive mapping already established from WSL.
|
|
168
197
|
2. Keep the authorized root/target, byte hashes, no-symlink and link-count checks.
|
|
169
|
-
|
|
170
|
-
|
|
198
|
+
Use WSL path resolution, component metadata (`lstat` or equivalent), regular
|
|
199
|
+
file/directory types and opened-file identity within the authorized root.
|
|
200
|
+
A OneDrive folder name or `FILE_ATTRIBUTE_REPARSE_POINT` alone is not grounds
|
|
201
|
+
to refuse saving. Do not require Windows reparse-tag queries, cloud-tag
|
|
202
|
+
allowlists or Windows final-path APIs for this WSL profile. Missing Windows
|
|
203
|
+
metadata capabilities alone must not block a normal WSL OneDrive save.
|
|
204
|
+
Verify the resolved WSL path and opened file stay inside the authorized root
|
|
205
|
+
and exact target. Reject WSL symlinks, detected junctions or other path
|
|
206
|
+
redirections, scope escapes and special files. If optional Windows metadata
|
|
207
|
+
identifies an actual name-surrogate/redirection, reject it; do not ignore
|
|
208
|
+
positive evidence of a redirection.
|
|
209
|
+
For new files verify the parent before exclusive creation and the opened
|
|
210
|
+
file before writing. Missing WSL path/type/identity checks block the affected
|
|
211
|
+
target; report which check is missing, not a blanket reparse-point refusal.
|
|
212
|
+
Before reading or updating a known online-only or recall-on-access placeholder,
|
|
213
|
+
obtain explicit hydration/network consent. Stop if recall risk is indicated
|
|
214
|
+
but availability is unknown; do not demand a cloud-availability API for an
|
|
215
|
+
otherwise normal WSL file merely because its parent is in OneDrive.
|
|
216
|
+
Do not pin files, remove cloud attributes or change sync settings.
|
|
217
|
+
Respect Windows read-only attributes and ACL access denials.
|
|
171
218
|
Target only the ordinary `.md` data stream, not `:stream` or device paths.
|
|
172
219
|
Never run chmod/chown, remove attributes or change mount/Windows settings.
|
|
173
220
|
3. For an existing note, use a verified in-place write to the same file object,
|
|
@@ -182,7 +229,12 @@ This profile does not extend Python CLI, Canvas or Bases saving support.
|
|
|
182
229
|
For a new note, create exclusively without overwriting an equivalent name,
|
|
183
230
|
allowing normal Windows parent ACL inheritance.
|
|
184
231
|
5. Flush/close, then read back exact bytes and verify file identity and observable
|
|
185
|
-
attributes, allowing only normal write timestamps/archive-bit
|
|
232
|
+
WSL-observable attributes, allowing only normal write timestamps/archive-bit
|
|
233
|
+
updates and
|
|
234
|
+
consented hydration state changes, not loss of cloud-provider metadata.
|
|
235
|
+
Retaining the object avoids intentionally replacing its Windows metadata;
|
|
236
|
+
unavailable Windows ACL/cloud-attribute enumeration is not a refusal reason
|
|
237
|
+
and must not be reported as verified attribute preservation.
|
|
186
238
|
Report saved only on a match. Disclose non-atomic writes,
|
|
187
239
|
possible partial writes and concurrent Obsidian/Sync/Windows edits before saving;
|
|
188
240
|
after a possible write failure report unknown, without retry or rollback.
|
|
@@ -193,6 +245,149 @@ Do not silently redirect a refused save to `/tmp` or another file. An alternate
|
|
|
193
245
|
output needs explicit exact-path consent and is never a successful Vault update.
|
|
194
246
|
Proofreading gates and the session-storage prohibition still apply.
|
|
195
247
|
|
|
248
|
+
### Native Windows direct saves
|
|
249
|
+
|
|
250
|
+
Use the same authorization, source rechecks, exclusive creation, in-place updates
|
|
251
|
+
and exact readback rules. Verify the local Windows backing drive and ordinary
|
|
252
|
+
data stream. A OneDrive folder name or flag alone is not grounds to refuse
|
|
253
|
+
saving. For native Windows path verification, inspect each actual reparse
|
|
254
|
+
tag, including parent directories, and allow only verified Windows cloud-family
|
|
255
|
+
tags (`IO_REPARSE_TAG_CLOUD` and documented variants) that are not name surrogates.
|
|
256
|
+
Verify the opened object's final path and identity stay inside the authorized
|
|
257
|
+
root and exact target. Reject symlinks, junctions, mount-point redirections,
|
|
258
|
+
unknown tags and escapes. Missing tag/final-path verification blocks the affected
|
|
259
|
+
native Windows target. Respect ACLs/read-only attributes and hydration consent.
|
|
260
|
+
Do not apply these Windows-API preconditions to WSL host reads or saves.
|
|
261
|
+
|
|
262
|
+
Neither host profile is a Windows security sandbox or a guarantee against all
|
|
263
|
+
undetectable reparse redirections, races or sync failures. WSL checks establish
|
|
264
|
+
the host-visible path/type/identity, not an independent Windows reparse audit.
|
|
265
|
+
|
|
266
|
+
## Authorized file and directory operations
|
|
267
|
+
|
|
268
|
+
Use host filesystem tools for directory creation and regular-file creation,
|
|
269
|
+
editing or deletion inside the authorized Vault/scopes, including verified
|
|
270
|
+
OneDrive paths. These are host operations, not new Python CLI commands.
|
|
271
|
+
Do not refuse an authorized ordinary file merely because its extension is not
|
|
272
|
+
`.md`. The backend stores supplied bytes, not authored content or executable
|
|
273
|
+
instructions. Markdown authoring/proofreading stays with `obsidian-markdown`;
|
|
274
|
+
Canvas and Bases creation/editing stays with their dedicated workflows and
|
|
275
|
+
existing save gates. Never use generic file writing to bypass those gates.
|
|
276
|
+
|
|
277
|
+
1. Require the absolute Vault root, working directory, exact resolved targets,
|
|
278
|
+
operation (`mkdir`, `create`, `edit` or `delete`), permitted changes and actual
|
|
279
|
+
user authority. For file creation/editing require exact candidate bytes;
|
|
280
|
+
edits also require current source bytes/hash and identity. A capability
|
|
281
|
+
request or directory selection is not permission to mutate existing files.
|
|
282
|
+
Explicit target/action/change authority suffices without repeated approval,
|
|
283
|
+
unless pre-operation confirmation was requested. Ask for missing details one
|
|
284
|
+
at a time; pass read/model scopes and copy consent where applicable.
|
|
285
|
+
2. Present the exact operation list. Expand a wildcard or batch only within
|
|
286
|
+
separately authorized enumeration scopes, then obtain approval for the
|
|
287
|
+
resulting exact paths/actions before mutation. Do not infer permission for
|
|
288
|
+
siblings, parent creation, attachment changes or backlink repair.
|
|
289
|
+
Check resolved paths from root to target, equivalent-name collisions, types,
|
|
290
|
+
identity, link counts and management-directory exclusions. Reject symlinks,
|
|
291
|
+
detected junctions/redirections, scope escapes and special/device files.
|
|
292
|
+
Select the WSL or native Windows profile for local-drive, ordinary-stream,
|
|
293
|
+
ACL and hydration checks; unknown-tag refusal is native-Windows-only.
|
|
294
|
+
Do not reintroduce Windows tag/API requirements for WSL operations.
|
|
295
|
+
Do not bypass host refusals or content exclusions; missing verification blocks
|
|
296
|
+
only the affected operation.
|
|
297
|
+
3. For `mkdir`, list and authorize each missing parent explicitly. Create each
|
|
298
|
+
directory without overwriting, after verifying its existing parent; recheck
|
|
299
|
+
the new directory's identity and scope before proceeding to its children.
|
|
300
|
+
An already-existing verified directory is a no-op, not a newly created one;
|
|
301
|
+
a file or equivalent-name collision is a conflict, not success.
|
|
302
|
+
4. For `create`, use exclusive non-overwriting creation of the exact supplied
|
|
303
|
+
bytes. For `edit`, compare current source bytes/hash and identity immediately
|
|
304
|
+
before writing; stop on concurrent changes and do not write identical bytes.
|
|
305
|
+
Apply the existing Linux/Windows save-preservation and readback rules to the
|
|
306
|
+
authorized file type. Binary edits require a supplied complete byte candidate
|
|
307
|
+
or a separately authorized format-aware producer, not text rewriting.
|
|
308
|
+
5. For `delete`, require explicit deletion authority for every exact regular
|
|
309
|
+
file, including notes and attachments. Identify and record the current file's
|
|
310
|
+
identity and SHA-256 with authorized local reads; hashing does not authorize
|
|
311
|
+
sending its content to a model. Present the deletion and disclose that
|
|
312
|
+
OneDrive may propagate it to other devices and backups/trash recovery are
|
|
313
|
+
not guaranteed. Recheck bytes/hash, identity, parent and scope immediately
|
|
314
|
+
before unlinking only that file; stop on changes. Do not remove attributes,
|
|
315
|
+
broaden ACLs or use a recursive deletion command. Deletion uses the same
|
|
316
|
+
path/access checks, not the content-save attribute-preservation/readback
|
|
317
|
+
requirement. Verify absence without following links afterward; a replacement
|
|
318
|
+
at that path is a conflict/unknown result, never a reason to delete again.
|
|
319
|
+
A missing target is reported as already absent, not deleted by this operation.
|
|
320
|
+
6. Report each path/action as created, edited, deleted, unchanged/already absent,
|
|
321
|
+
blocked, failed or unknown based on observed results. Stop dependent operations
|
|
322
|
+
after a prerequisite fails and report partial batches accurately. Disclose
|
|
323
|
+
non-atomicity and concurrent edits before mutation; never automatically retry
|
|
324
|
+
or roll back a possibly performed operation.
|
|
325
|
+
|
|
326
|
+
Directory deletion, recursive removal, moves and renames are outside this
|
|
327
|
+
workflow. Never delete the Vault root, working-directory root or session storage.
|
|
328
|
+
Do not automatically repair references after deletion, make backup copies or
|
|
329
|
+
claim recoverability. Backups need separate exact-path/copy authorization.
|
|
330
|
+
Network fetch, tool execution and dependency installation need their own consent.
|
|
331
|
+
|
|
332
|
+
## Authorized PDF and conversion artifact imports
|
|
333
|
+
|
|
334
|
+
This is a host-tool storage workflow, not a new `vault.py` command or a
|
|
335
|
+
relaxation of Markdown, Canvas or Bases save gates. Do not treat OneDrive or
|
|
336
|
+
being inside a Vault as a blanket prohibition on an explicitly authorized
|
|
337
|
+
PDF download or Docling conversion. Neither tool is bundled or auto-installed.
|
|
338
|
+
|
|
339
|
+
1. Obtain the absolute Vault root, selected working directory, exact source
|
|
340
|
+
URLs/local files, permitted read/model-input scopes and exact output paths.
|
|
341
|
+
Resolve paths using the working-directory rules above. A directory choice
|
|
342
|
+
alone is not download, conversion, network or write permission. Ask for
|
|
343
|
+
missing details one at a time. Explicit source/action/output authorization
|
|
344
|
+
suffices; do not demand Markdown candidates before downloading a PDF.
|
|
345
|
+
2. Distinguish source fetch consent, cloud hydration, local conversion and
|
|
346
|
+
sending content to models/services. A download authorizes only its specified
|
|
347
|
+
source, not arbitrary redirects, linked resources or remote conversion.
|
|
348
|
+
Do not upload Vault content to external conversion services. Check available
|
|
349
|
+
download/Docling capabilities and their output behavior before execution;
|
|
350
|
+
ask before installing dependencies or downloading OCR/model assets.
|
|
351
|
+
3. Present every output path before writing: source `.pdf`, extracted `.md`,
|
|
352
|
+
and only explicitly requested images/JSON or other conversion sidecars.
|
|
353
|
+
Use non-overwriting creation with exact/equivalent-name collision checks.
|
|
354
|
+
Existing files require separate replacement authority and source bytes/hash;
|
|
355
|
+
use the selected direct-save profile, never a converter's unchecked overwrite.
|
|
356
|
+
Verify paths, identities, no symlinks, management-directory exclusions and
|
|
357
|
+
link counts as above. Windows/WSL imports use their respective host profile:
|
|
358
|
+
WSL path/type checks or native Windows verified non-redirecting cloud tags.
|
|
359
|
+
Apply the profile's ordinary-data-stream rule to
|
|
360
|
+
each authorized artifact extension, never `:stream` or device paths.
|
|
361
|
+
4. Only create missing directories with separate approval for their exact paths,
|
|
362
|
+
after verifying the existing ancestor and rechecking each created directory;
|
|
363
|
+
follow the file/directory operation workflow above.
|
|
364
|
+
Authorization for an output does not authorize sibling outputs. Configure
|
|
365
|
+
conversion to produce only the approved outputs; if that cannot be guaranteed,
|
|
366
|
+
use a separately consented staging location and transfer exact verified bytes.
|
|
367
|
+
A consented workspace inside the selected Vault directory may hold import
|
|
368
|
+
scratch files; the Python CLI workspace remains Vault-external. List scratch,
|
|
369
|
+
cache and temporary locations/retention before running. Never use session
|
|
370
|
+
storage or silently substitute `/tmp`. Without approved locations or a known
|
|
371
|
+
safe creation/write method, stop before fetching or converting.
|
|
372
|
+
5. For downloads check command/HTTP failure and verify the result is a PDF, not
|
|
373
|
+
an HTML error/login page. For conversion check exit status and every expected
|
|
374
|
+
artifact's existence/content; an empty or missing result is not success.
|
|
375
|
+
Read back exact stored bytes and record their SHA-256 hashes. Keep provenance
|
|
376
|
+
from the authorized source; do not claim extraction fidelity without review.
|
|
377
|
+
Raw extracted Markdown is not meaning-preserving proofreading. Hand requested
|
|
378
|
+
note authoring or Japanese revisions to `obsidian-markdown`; those edits keep
|
|
379
|
+
their normal save/review gates.
|
|
380
|
+
6. Report download, conversion and each output's exact path/hash/status separately.
|
|
381
|
+
A verified PDF can remain saved when conversion fails; report that partial
|
|
382
|
+
result. After a possible write failure report unknown for the affected output,
|
|
383
|
+
inspect without rewriting, and never automatically retry, roll back or delete.
|
|
384
|
+
Respect host refusals, ACL denials and content exclusions; this workflow must
|
|
385
|
+
not bypass them. Clean up only known scratch files with deletion consent.
|
|
386
|
+
|
|
387
|
+
Disclose direct-save non-atomicity and concurrent OneDrive/Obsidian edits before
|
|
388
|
+
writing. One blocked artifact does not invalidate other verified outputs; do not
|
|
389
|
+
claim the entire import was completed when any requested step was unperformed.
|
|
390
|
+
|
|
196
391
|
## Validation and proofreading save gates
|
|
197
392
|
|
|
198
393
|
Validate only; do not generate or improve the candidate. Unresolved links are
|
|
@@ -247,11 +442,13 @@ plan and approval.
|
|
|
247
442
|
|
|
248
443
|
## Outcomes and limits
|
|
249
444
|
|
|
250
|
-
Both modes save one note per operation.
|
|
445
|
+
Both Markdown save modes save one note per operation. Artifact imports report
|
|
446
|
+
each separately authorized output. Distinguish unsaved, saved, partial,
|
|
251
447
|
failed and unknown outcomes, naming the target and unperformed work. Never
|
|
252
448
|
automatically re-save or roll back a possibly saved operation. Confirm unknown
|
|
253
|
-
records/temp files and their diffs with the user before acting.
|
|
254
|
-
|
|
449
|
+
records/temp files and their diffs with the user before acting. File deletion
|
|
450
|
+
requires the explicit host-operation authority above; it is never implied by
|
|
451
|
+
editing, importing or cleanup. Do not commit, push, publish, move or rename notes.
|
|
255
452
|
|
|
256
453
|
Require verifiable local regular files and the selected profile's attribute preservation; refuse
|
|
257
454
|
unsupported capabilities rather than weakening checks. Neither mode guarantees
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Obsidianローカル保存バックエンド
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
呼出元が指定した範囲の読み取り・静的検証・候補の保存と、明示許可されたPDF・変換成果物の取り込みを担当する。
|
|
4
|
+
ホストツールによるディレクトリ作成、通常ファイルの作成・編集・削除も、正確な対象と操作への許可を得て行う。
|
|
4
5
|
本文の作成・編集の指揮はobsidian-markdown、日本語の校正はjapanese-proseへ分離する。
|
|
5
|
-
対象は0.5.
|
|
6
|
+
対象は0.5.7であり、Canvas用の共用保存API版1は維持する。
|
|
6
7
|
|
|
7
8
|
## 上位ワークフローの移管
|
|
8
9
|
|
|
@@ -13,6 +14,8 @@
|
|
|
13
14
|
| アプリ上の検索・リンク確認・タスクやプロパティの操作 | 明示的に選択したobsidian-cli |
|
|
14
15
|
| Web・HTML抽出、JSON・CSVからの候補生成 | defuddle、knap。ノートへの組み込みはobsidian-markdown |
|
|
15
16
|
| 許可範囲のローカル読み取り・検証・確定済み候補の保存 | obsidian-vault |
|
|
17
|
+
| ディレクトリ作成、通常ファイルの作成・編集・削除 | obsidian-vaultのホスト操作手順。Markdown・Canvas・Basesの内容編集は各担当を維持 |
|
|
18
|
+
| 明示指定したPDFのダウンロードとDocling変換成果物の保存 | ホストの取得・変換ツールとobsidian-vaultの取り込み手順。本文編集はobsidian-markdown |
|
|
16
19
|
|
|
17
20
|
規約の推定、関連ノートの推薦、独立したリンク分析・修復は、このSkillでは行わない。
|
|
18
21
|
旧来の高水準の依頼を受けた場合は担当を案内し、ここで候補本文を作ったり探索を始めたりしない。
|
|
@@ -26,6 +29,7 @@
|
|
|
26
29
|
作業ディレクトリ、補助コピーへの同意、校正結果のレビューも引き継ぐ。
|
|
27
30
|
不足する保存情報は1問ずつ確認し、候補が未作成なら呼出元へ戻す。
|
|
28
31
|
候補を検査に通すために、バックエンドが本文を補完・修正することはない。
|
|
32
|
+
ディレクトリ作成とファイル削除は後述の操作情報を渡し、架空の本文候補やCLI計画は要求しない。
|
|
29
33
|
|
|
30
34
|
## ホストツールによる候補の直接保存
|
|
31
35
|
|
|
@@ -41,12 +45,13 @@ Vaultルート基準と明示されたパスや絶対パスは、その指定を
|
|
|
41
45
|
依頼、原文、候補、差分、診断、レビュー、計画、保存記録、結果、一時ファイルにも同じ制約を適用する。
|
|
42
46
|
書き込み前に実体の保存場所を確認し、作業ディレクトリや出力先がセッション領域なら、別の場所を1問ずつ確認する。
|
|
43
47
|
明示指定された場合も、このSkillではセッション領域へ書かず、代替場所への許可を得る。
|
|
44
|
-
|
|
48
|
+
対象の親が存在しなければ、正確な各ディレクトリの作成への明示許可を確認する。
|
|
49
|
+
許可がなければ止め、セッション領域への代替保存や無断のフォルダー作成は行わない。
|
|
45
50
|
対象や変更内容が曖昧なら1問ずつ確認する。「案を作って」だけでは保存しない。
|
|
46
51
|
利用者が対象・変更内容・保存を明示した依頼は、その範囲の書き込み許可として扱える。
|
|
47
52
|
毎回のCLI計画承認は要求しない。保存前の差分確認を求められたら、確認まで書かない。
|
|
48
53
|
|
|
49
|
-
Vault内の`.md`だけを扱い、対象と親の実体、許可範囲、通常ファイルかを確認する。
|
|
54
|
+
Markdown候補保存ではVault内の`.md`だけを扱い、対象と親の実体、許可範囲、通常ファイルかを確認する。
|
|
50
55
|
途中のシンボリックリンク、Vault外、管理フォルダーへのアクセスを拒否する。
|
|
51
56
|
大文字小文字違いも含めて`.obsidian`と`.git`を除外し、別表記の同名対象を上書きしない。
|
|
52
57
|
確認に必要な機能がないホストでは保存しない。
|
|
@@ -56,7 +61,9 @@ Vault内の`.md`だけを扱い、対象と親の実体、許可範囲、通常
|
|
|
56
61
|
Linuxの通常FSでは所有者・グループ・権限を維持し、拡張属性などを保全できなければ拒否する。
|
|
57
62
|
WSLのWindowsドライブには次節の直接保存手順を使い、仮想的なLinux権限だけで拒否しない。
|
|
58
63
|
どちらも複数ハードリンクを拒否し、属性を削除して回避しない。
|
|
59
|
-
|
|
64
|
+
ノート保存への許可だけではフォルダー作成、削除、添付変更を行わず、明示許可された操作は後述のホスト操作手順で扱う。
|
|
65
|
+
`.canvas`・`.base`の作成・内容編集は専用ワークフローを維持し、移動・改名はこの手順の対象外とする。
|
|
66
|
+
PDF・変換成果物は独立した取り込み手順も適用する。
|
|
60
67
|
指定外のプロパティ、リンク、コード、数値、識別子、文字コード、改行を保持する。
|
|
61
68
|
同一内容なら書かず、保存後は読み戻して対象パスと実際の変更内容を報告する。
|
|
62
69
|
|
|
@@ -77,14 +84,29 @@ CLI操作が失敗した場合も、この経路へ無断で切り替えない
|
|
|
77
84
|
|
|
78
85
|
この手順は、ホストツールによる通常のMarkdownノート保存だけに適用する。
|
|
79
86
|
この直接保存手順は0.5.4から対応する。
|
|
87
|
+
ネイティブWindowsの再解析タグ検証は別の手順とし、WSL保存の必須条件に流用しない。
|
|
88
|
+
通常ファイルの作成・編集と成果物取り込みも、実行環境に応じた手順を各拡張子の通常データストリームに適用する。
|
|
80
89
|
WSLのローカルWindowsドライブなら、FS名がdrvfs・9p・v9fsであることだけを理由に拒否しない。
|
|
81
90
|
Python CLI・Canvas・Basesの保存対応は拡張せず、CLIの許可FS一覧を直接保存の条件に流用しない。
|
|
82
91
|
Pythonやuvを必須にする変更でもない。
|
|
83
92
|
|
|
84
93
|
1. WSL環境、実際のマウント、Windowsパスとの対応を確認する。`/mnt/c/...`という表記だけでは判断しない。
|
|
85
|
-
Windows
|
|
94
|
+
WSLのマウント情報とパス対応からローカルWindowsドライブを確認し、ネットワークドライブやUNC・SMB共有は対象外にする。
|
|
95
|
+
WSLで確認できたドライブ対応を、PowerShell・fsutil・Windows APIで再確認することは必須にしない。
|
|
86
96
|
2. 許可済みのVaultと保存先、原文ハッシュ、ファイル実体、リンク数を確認する。
|
|
87
|
-
|
|
97
|
+
OneDriveというフォルダー名や再解析ポイント属性だけでは保存を拒否しない。
|
|
98
|
+
OneDriveのcloud再解析属性はWSLのシンボリックリンクではなく、それ自体は別パスへの転送を示さない。
|
|
99
|
+
WSLのパス解決、各要素のlstat等のメタデータ、通常ファイル・ディレクトリか、開いた実体の識別情報を確認する。
|
|
100
|
+
解決したWSLパスと実体が許可済みのVaultと正確な対象の範囲に収まることを確認する。
|
|
101
|
+
Windows再解析タグ取得、cloudタグの許可一覧、Windows最終パスAPIは必須にしない。
|
|
102
|
+
それらの取得機能がないことだけで、通常のWSLファイルとして扱えるOneDriveへの保存を拒否しない。
|
|
103
|
+
WSLのシンボリックリンク、検出したジャンクションや実際の転送、範囲外、特殊ファイルは拒否する。
|
|
104
|
+
任意のWindowsメタデータ検査で名前代理・転送が判明した場合も拒否し、実際の転送の証拠は無視しない。
|
|
105
|
+
新規対象は排他的作成前に親を検証し、作成した実体も書き込み前に確認する。
|
|
106
|
+
オンライン専用やアクセス時に取得すると判明したファイルは、読み取り・更新前に取得通信への明示同意を得る。
|
|
107
|
+
取得通信の兆候がありローカル利用可能か不明なら止めるが、通常のWSLファイルにWindows側の利用可能性APIを要求しない。
|
|
108
|
+
固定、クラウド属性削除、同期設定変更で回避しない。
|
|
109
|
+
WSLのパス・型・実体を確認できなければ、その不足と対象パスを具体的に報告する。読み取り専用属性やACLによる拒否を尊重する。
|
|
88
110
|
通常の`.md`データストリームだけを対象にし、`:stream`やデバイスパスへ書き込まない。
|
|
89
111
|
3. 既存ノートは同じファイル実体へ書き込む。切り詰めずに開き、同じハンドルで原文と実体を保存直前に照合する。
|
|
90
112
|
候補を書いた後、候補と同じ長さに切り詰める。一時ファイルへの置換、改名、削除しての再作成は使わない。
|
|
@@ -93,7 +115,9 @@ Pythonやuvを必須にする変更でもない。
|
|
|
93
115
|
Linuxのuid・gid・modeが仮想表示であることや、POSIX拡張属性一覧を取得できないことだけでは拒否しない。
|
|
94
116
|
新規ノートは排他的に作成し、既存名を上書きせず、通常のWindows親ディレクトリのACL継承に従う。
|
|
95
117
|
5. 書き込みをフラッシュして閉じ、読み戻したバイト列・実体・観測できる属性を確認する。
|
|
96
|
-
|
|
118
|
+
通常の書き込みに伴う時刻・アーカイブ属性更新と、同意済みのローカル取得に伴う状態変化だけを許容する。
|
|
119
|
+
同じ実体を維持し、クラウドプロバイダーのメタデータを意図的に置換しない。
|
|
120
|
+
WindowsのACL・cloud属性を列挙できないことだけでは拒否せず、検証できた属性として報告もしない。
|
|
97
121
|
途中失敗やObsidian・Sync・Windows側の同時編集を完全には防げないことを、保存前に説明する。
|
|
98
122
|
書いた可能性がある失敗は結果不明とし、自動再保存やロールバックは行わない。
|
|
99
123
|
|
|
@@ -104,6 +128,89 @@ chmod・chown、属性の削除、マウントやWindows設定の変更で保存
|
|
|
104
128
|
校正の保護検査・意味レビューと、セッション領域への保存禁止は維持する。
|
|
105
129
|
権限の違いは[MicrosoftのWSLファイル権限資料](https://learn.microsoft.com/en-us/windows/wsl/file-permissions)を参照する。
|
|
106
130
|
|
|
131
|
+
### ネイティブWindowsでの直接保存
|
|
132
|
+
|
|
133
|
+
ネイティブWindowsでは親を含む実際の再解析タグを確認し、名前代理ではない確認済みのcloud系タグだけを許可する。
|
|
134
|
+
開いた実体のWindows最終パスと識別情報を確認し、未知のタグ、ジャンクション、範囲外への転送は拒否する。
|
|
135
|
+
確認できなければネイティブWindowsの対象を停止するが、このWindows API要件をWSL保存へ流用しない。
|
|
136
|
+
認可、原文再照合、非上書き作成、同一実体への更新、読み戻しと取得通信同意は維持する。
|
|
137
|
+
WSLの確認はホストから見えるパス・型・実体の確認であり、Windows再解析情報の独立監査ではない。
|
|
138
|
+
どちらも検出不能な転送、同時変更、同期失敗がないことを保証しない。
|
|
139
|
+
|
|
140
|
+
## ディレクトリとファイルのホスト操作
|
|
141
|
+
|
|
142
|
+
許可済みのVaultと範囲内で、ディレクトリ作成、通常ファイルの作成・編集・削除をホストツールで行う。
|
|
143
|
+
検証済みのOneDriveも対象とし、通常ファイルを`.md`以外という理由だけで拒否しない。
|
|
144
|
+
`mkdir`・`create`・`edit`・`delete`はホストへの操作指定であり、Python CLIに同名コマンドを追加するものではない。
|
|
145
|
+
本文生成は担当Skillへ戻し、Markdownの校正・Canvas・Basesの保存検査を汎用書き込みで回避しない。
|
|
146
|
+
|
|
147
|
+
1. Vaultの絶対パス、作業ディレクトリ、解決済みの正確な全対象、操作、変更範囲、利用者の実際の許可を受け取る。
|
|
148
|
+
ファイル作成・編集は正確な候補バイト列、編集は現在の原文バイト列・ハッシュ・実体も必要とする。
|
|
149
|
+
機能追加の依頼や作業ディレクトリ指定だけでは実際のファイル操作を許可しない。
|
|
150
|
+
対象・操作・変更への明示許可があれば毎回の再承認は不要だが、事前確認を求められた場合は確認まで操作しない。
|
|
151
|
+
必要な読み取り・モデル入力範囲、コピー同意も渡し、不足する情報は1問ずつ確認する。
|
|
152
|
+
2. 全対象と操作を提示する。ワイルドカードや一括指定は許可済みの列挙範囲内だけで展開し、確定したパス・操作への承認を得る。
|
|
153
|
+
親・対象の実体、同等名、型、範囲、リンク数、管理フォルダー除外を確認する。
|
|
154
|
+
シンボリックリンク、検出したジャンクション・転送、範囲外、特殊ファイルは拒否する。
|
|
155
|
+
WSLでは前節のWSLパス・型・実体の確認、ネイティブWindowsでは再解析タグ検証を使う。
|
|
156
|
+
未知のWindowsタグ拒否はネイティブWindowsに限定し、WSLでWindowsメタデータ取得を再び必須にしない。
|
|
157
|
+
どちらもローカルドライブ・通常ストリーム・ACL・取得通信の確認は維持する。
|
|
158
|
+
ホスト拒否やコンテンツ除外を回避せず、確認不能なら影響する操作だけを停止する。
|
|
159
|
+
3. ディレクトリ作成は未作成の親もすべて正確なパスで許可を得て、既存の親を検証してから非上書きで順に作る。
|
|
160
|
+
作成した各実体と範囲を確認してから子へ進む。検証済みの既存ディレクトリは変更なしとする。
|
|
161
|
+
同名ファイルや同等名の衝突は成功ではなく競合とする。
|
|
162
|
+
4. ファイル作成は正確なバイト列を排他的に保存する。編集は直前の原文バイト列・ハッシュ・実体を照合し、外部変更なら止める。
|
|
163
|
+
同一内容なら書かず、対象形式にも既存のLinux・Windows属性保全と読み戻しの確認を適用する。
|
|
164
|
+
バイナリは完全な候補バイト列か別途許可した形式対応ツールを使い、テキスト置換で壊さない。
|
|
165
|
+
5. 削除はノート・添付を含む正確な各通常ファイルへの明示的な削除許可を必須とする。
|
|
166
|
+
許可済みのローカル読み取りで現在の実体とSHA-256を記録する。ハッシュ計算は本文のモデル送信を許可しない。
|
|
167
|
+
削除対象を提示し、OneDriveが他の端末へ削除を同期し得ること、バックアップやごみ箱からの復旧を保証しないことを説明する。
|
|
168
|
+
削除直前に内容・ハッシュ・実体・親・範囲を再照合し、変更があれば止める。正確な1ファイルだけをunlinkする。
|
|
169
|
+
属性削除・ACL変更・再帰削除で通さない。保存時の属性保全や内容読み戻しは削除の条件に流用しない。
|
|
170
|
+
削除後はリンクを追わず不在を確認する。同じパスの別実体は競合・結果不明とし、再削除しない。
|
|
171
|
+
もともと不在なら「既に不在」と報告し、この操作で削除済みとはしない。
|
|
172
|
+
6. 各パスと操作の作成済み・編集済み・削除済み・変更なし・既に不在・停止・失敗・結果不明を実測で報告する。
|
|
173
|
+
前提操作が失敗したら依存する操作を止め、一括処理の部分実施を正確に報告する。
|
|
174
|
+
非原子的操作と同時編集リスクを事前説明し、実行された可能性がある操作を自動再実行・ロールバックしない。
|
|
175
|
+
|
|
176
|
+
ディレクトリ削除、再帰削除、移動・改名は対象外とする。Vaultルート、作業ディレクトリのルート、セッション領域を削除しない。
|
|
177
|
+
削除後の参照修復やバックアップ作成は自動で行わない。バックアップには正確な場所とコピーへの別途同意が必要である。
|
|
178
|
+
通信、外部ツールの実行、依存導入はそれぞれの許可を維持する。
|
|
179
|
+
|
|
180
|
+
## PDF・Docling変換成果物の取り込み
|
|
181
|
+
|
|
182
|
+
これはホストツールで行う保存手順であり、`vault.py`に新しいコマンドを追加するものではない。
|
|
183
|
+
Vault内やOneDrive上であることだけを理由に、明示許可されたPDF保存や変換を禁止しない。
|
|
184
|
+
Doclingは同梱・自動導入せず、取得と変換は呼出元のツールが担当する。
|
|
185
|
+
DefuddleとKnapをPDF変換の代替として使わない。
|
|
186
|
+
|
|
187
|
+
1. Vaultの絶対パス、作業ディレクトリ、正確な取得元URL・入力ファイル、読み取り・モデル入力範囲、全出力先を確認する。
|
|
188
|
+
作業ディレクトリ指定だけでは取得・変換・通信・保存の許可にならない。不足する情報は1問ずつ確認する。
|
|
189
|
+
明示された取得元・操作・出力先への許可があれば、PDF取得前にMarkdown候補を要求しない。
|
|
190
|
+
2. ダウンロード通信、クラウドファイルのローカル取得、ローカル変換、モデルへの入力を区別する。
|
|
191
|
+
指定外のリダイレクト先や参照資料の取得は無断で行わず、Vault本文を外部変換サービスへ送らない。
|
|
192
|
+
利用できる取得ツール・Doclingと出力方式を実行前に確認する。依存導入やOCR・モデル資産の取得は別途許可を得る。
|
|
193
|
+
3. 元PDF、抽出Markdown、明示指定した画像・JSON等の全出力先を保存前に提示する。
|
|
194
|
+
同名・同等名の衝突を確認して非上書きで作成し、既存対象の置換には別途許可と元のバイト列・ハッシュを要求する。
|
|
195
|
+
対象・親の実体、範囲、管理フォルダー除外、リンク数を確認し、WSLとネイティブWindowsそれぞれの手順を使う。
|
|
196
|
+
変換ツールの無検証上書きは使わず、通常データストリーム以外への書き込みは拒否する。
|
|
197
|
+
4. 親が未作成なら正確な作成パスへの別途許可を得て、既存の祖先と作成した各フォルダーを再確認する。
|
|
198
|
+
ツールの追加出力を承認済みのものに限定できなければ、別途同意した仮出力先で生成し、検証済みのバイト列だけを移す。
|
|
199
|
+
取り込みの補助ファイルは同意済みのVault内作業ディレクトリも利用できるが、CLI計画の作業領域はVault外のままとする。
|
|
200
|
+
補助・キャッシュ・一時ファイルの場所と保持を事前に提示する。セッション領域や無断の`/tmp`代替は使わない。
|
|
201
|
+
安全な作成・書き込み方法や必要な場所への許可がなければ、取得・変換前に止める。
|
|
202
|
+
5. 取得は終了状態とHTTPエラーを確認し、HTMLのログイン・エラーページではなくPDFであることを検証する。
|
|
203
|
+
変換は終了状態と全成果物の存在・内容を確認する。空・欠落した出力を成功としない。
|
|
204
|
+
保存後は正確なバイト列を読み戻し、SHA-256を記録する。取得元を保持し、内容の忠実性はレビューなしに保証しない。
|
|
205
|
+
生の抽出は意味保存校正ではない。本文作成・日本語修正を求められたらobsidian-markdownへ渡し、通常の保存・レビュー検査を使う。
|
|
206
|
+
6. ダウンロード・変換・各成果物の正確なパス、ハッシュ、結果を個別に報告する。
|
|
207
|
+
PDF保存後に変換が失敗した場合はPDFだけ保存済みの部分実施とする。書いた可能性がある失敗は対象の結果不明とする。
|
|
208
|
+
自動再保存・ロールバック・削除は行わず、確認のための読み取りだけを行う。補助ファイルの削除にも許可が必要である。
|
|
209
|
+
ホストの拒否、ACL、コンテンツ除外を回避しない。1成果物の停止で他の検証済み成果物を未実施と扱わない。
|
|
210
|
+
|
|
211
|
+
保存前には非原子的書き込みとOneDrive・Obsidianの同時編集リスクを説明する。
|
|
212
|
+
取り込みへの許可は通常のノート編集・Canvas・Basesの保存許可を拡大しない。
|
|
213
|
+
|
|
107
214
|
## CLI計画保存モードの導入と起動
|
|
108
215
|
|
|
109
216
|
既存の同名Skillを無断で置換しない。必要な呼出元と兄弟Skillは別途導入する。
|
|
@@ -241,4 +348,5 @@ receipt.jsonは保存後の検証済み記録、result.jsonは本文を含めな
|
|
|
241
348
|
成功記録が不正、欠落した記録から以前の保存が疑われる、現在の内容が変わった、という場合は自動再保存しない。
|
|
242
349
|
unknownは「変更なし」を意味しない。対象、原文、候補、一時ファイル、記録を確認し、新しい計画が必要か判断する。
|
|
243
350
|
一時ファイルや操作ディレクトリは利用者の確認なしに掃除しない。
|
|
244
|
-
|
|
351
|
+
補助ファイルの掃除は、確認した操作ディレクトリの既知ファイルへの削除許可の範囲に限定する。
|
|
352
|
+
Vault内の通常ファイルを削除する依頼には、上記のホスト操作手順を使う。CLIに削除コマンドはない。
|