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