summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Design.md12
-rw-r--r--doc/Specifications.md15
2 files changed, 19 insertions, 8 deletions
diff --git a/doc/Design.md b/doc/Design.md
index 101a896..31d0247 100644
--- a/doc/Design.md
+++ b/doc/Design.md
@@ -265,7 +265,7 @@ Ollamaに公開するInternal Toolは次の6群に固定する。個々のOS com
{"root":"string","mode":"glob|name|text|regex|tail","query":"string","max_results":100,"tail_lines":100}
```
- `root`はread許可directory/file配下でなければdeny。
-- `tail`はtext file向け。binaryは拒否する。
+- `tail`はtext file向け。binaryは拒否する。判定は先頭4 KiBのみを読み、BOM確認(UTF-8/UTF-16 LE/UTF-16 BE)→BOMなしはUTF-8 strict byte sequence検証で行う。NULバイトのみの判定はUTF-16 textを誤拒否するため使用しない。
- `max_results`にhard upper boundを設け、context爆発を防ぐ。
- `max_results`のhard upper boundは1,000件、`tail_lines`は10,000行とする。
### 7.2 file_read
@@ -279,14 +279,17 @@ Ollamaに公開するInternal Toolは次の6群に固定する。個々のOS com
```json
{
"path":"string",
- "operation":"overwrite|patch|atomic_replace|delete",
+ "operation":"overwrite|patch|atomic_replace|delete|rename",
"content":"string|null",
"patch":"string|null",
- "expected_sha256":"string|null"
+ "expected_sha256":"string|null",
+ "new_path":"string|null"
}
```
- overwrite/patch/atomic_replaceはwrite permissionを要求する。
- deleteはdelete permissionを要求する。
+- renameはsource/destination双方にwrite permissionを要求する。destinationが既に存在する場合は拒否する(overwrite不可)。cross-volume renameは不支持でTool failureとして返す。
+- rename transaction: PREPARE(source/destination検査+journal) → APPLY(File.Move) → VERIFY(source不存在/destination存在/hash一致) → COMMIT。crash recoveryはdestination hashがjournal記録と一致する場合のみdestinationからsourceへ戻す。
- `expected_sha256` 指定時はoptimistic concurrency guardとして利用する。
### 7.4 process_run
```json
@@ -379,7 +382,7 @@ AgentSession
1. Fixed System Prompt
2. User System Prompt
3. locale instruction
-4. selected Skills
+4. selected Skills (name + description一覧のみ、Progressive Disclosure Stage 1)
5. Sandbox capability summary
6. current TaskGraph / current Task
7. previous Summary
@@ -829,6 +832,7 @@ errorは内部codeとlocalized messageを分離し、ログ/auditにはcode、MC
- `AuditEvent`
- `LanguageContext`
- `SkillDescriptor`
+- `AgentSkill`
- `ToolCallRecord`
## 29. 実装レビュー用チェックリスト
- [ ] public MCP toolは2個だけか。
diff --git a/doc/Specifications.md b/doc/Specifications.md
index 5d21037..007ce51 100644
--- a/doc/Specifications.md
+++ b/doc/Specifications.md
@@ -310,10 +310,16 @@ Context要約を開始する利用率閾値は設定可能でなければならã
### 10.2 Skill
-- SkillはMarkdown instructionである。
-- Skillロードは権限付与を意味しない。
-- 必要なSkillだけを選択する。
-- Skill選択はLLMにより行うが、選択可能集合は設定されたSkill directoryに限定する。
+- Agent Skills open standard (agentskills.io) に準拠する。
+- Skill directory構造は `<skill-name>/SKILL.md` のみを扱う。legacy単一Markdown形式は廃止する。
+- `SKILL.md` はYAML frontmatter + Markdown bodyで構成し、`name` (1-64文字、lowercase英数字+hyphen、親directory名と一致) と `description` (1-1024文字) を必須とする。
+- frontmatterなしのSkillは推測せずrejectする。malformed YAML、duplicate skill nameは起動/check時fatalとする。
+- Progressive Disclosure: Stage 1 Discovery (name + descriptionのみ) → Stage 2 Selection (LLM) → Stage 3 Instructions Load (選択SKILL.md本文) → Stage 4 Resources (scripts/references/assets)。
+- Skill選択はLLMにより行う。選択可能集合は設定されたSkill directoryに限定する。Runtimeは選択結果を検証し、unknown Skill名を読み込まない。
+- Skillロードは権限付与を意味しない。`allowed-tools` metadataはSandbox permissionとして解釈しない。
+- Skillに `scripts/` が含まれていても自動実行許可しない。実行には通常どおりFilesystem execute capability、Process Approval、path + SHA-256、Sandbox Brokerを必須とする。
+- Skill directory内resourceについてcanonicalization、reparse point検査、Skill root外へのescape禁止を行う。
+- Skill選択・本文ロードはInternal Toolとして公開せず、Agent Runtime / Prompt Context Managementの責務として実装する。Internal Toolは既存5群+dir=6群に固定する。
---
@@ -344,6 +350,7 @@ Context要約を開始する利用率閾値は設定可能でなければならã
| FS-04 | write権限だけではdeleteできない。 |
| FS-05 | ACLとAppContainerの両方で強制可能な形にする。 |
| FS-06 | ディレクトリ作成 (mkdir) はwrite権限で許可する。ディレクトリ削除 (rmdir) はdelete権限で許可するが、空ディレクトリのみとする。ディレクトリ列挙 (list) はread権限で許可する。 |
+| FS-07 | renameはsource/destination双方にwrite権限を要求する。destination既存時は拒否する。cross-volume renameは不支持とする。 |
### 11.3 Process Policy