# AI作業境界ジェネレータ 無料版 v0.1

AIへ作業を渡す前に、目的・変更対象・変更禁止・検証方法を整理し、対象範囲・禁止差分・検証・失敗時停止を含む1枚のMarkdownを作るローカルツールです。

## 起動

このディレクトリで次を実行します。

```sh
python3 -m http.server 8000
```

ブラウザで `http://127.0.0.1:8000/` を開きます。4欄を入力して「境界Markdownを生成」を押すと、画面内コピーまたは `.md` 保存が使えます。

## データ境界

- 入力内容はメモリ上だけで処理し、ブラウザ保存領域やCookieへ保存しません。
- 外部通信、アクセス解析、秘密値収集は行いません。
- 入力内容や生成結果をコマンドとして実行しません。
- 入力中のHTMLとMarkdown制御文字は文字参照へ変換し、保存後のMarkdownから入力由来のHTML要素・リンク・画像・コード・表を作らせません。
- 保存操作は、利用者が押したときに生成結果をローカルのMarkdownファイルとして保存する処理だけです。
- 秘密値は入力しないでください。本ツールは秘密値を必要としません。

## 検査

Node.js 20以降で次を実行します。追加パッケージは不要です。

```sh
node --test tests/generator.test.mjs
```

固定10例の生成、必須4区分、空欄拒否、攻撃入力の無害化、禁止API不使用、防御ヘッダー、画面の必須操作を検査します。

## 公開前後のヘッダー検査

`_headers`には、CSPの`frame-ancestors 'none'`、`X-Content-Type-Options: nosniff`、`Referrer-Policy: no-referrer`、`Permissions-Policy`を固定しています。公開前は回帰検査で定義を確認します。

公開後はHTMLの実URLに対して応答ヘッダーを取得し、次をすべて確認します。1項目でも欠ける場合は公開失敗として配布を停止します。

- `Content-Security-Policy`に`frame-ancestors 'none'`がある
- `X-Content-Type-Options`が`nosniff`
- `Referrer-Policy`が`no-referrer`
- `Permissions-Policy`でcamera、microphone、geolocationが無効
- `X-Frame-Options`が`DENY`

## 同梱物

- `index.html`: 画面
- `style.css`: 表示
- `src/generator.mjs`: Markdown生成処理
- `src/app.mjs`: 画面操作、コピー、ファイル保存
- `tests/generator.test.mjs`: 固定10例と攻撃例を含む回帰検査
- `_headers`: 公開配信時の防御ヘッダー
- `security-packet.md`: 脅威、検査、停止、復旧の判断記録
- 成果物一覧JSON: 成果物境界

## 非対応

入力保存、外部通信、アクセス解析、任意コマンド実行、秘密値収集、複数案件の管理、共同編集には対応しません。
