tr4mpass
Free, open-source iCloud activation lock bypass tool. Remove iCloud lock from iPhone 5s through iPhone 15 Pro (iOS 12-26.1). Fully offline -- no servers, no payments. Supports checkm8 (A5-A11) and ses
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗本物か、フィッシングか。15秒で判定するトレーニング
メール・SMS を1通ずつ見て「本物」か「フィッシング」かを15秒で判定するブラウザゲームです。判定のあとに、本文のどこが危険のサイン(または本物と判断できる根拠)だったかをハイライト付きで解説します。中小企業の社員研修の冒頭5分や、個人の練習に使うことを想定しています。
登場する企業・団体・ドメインはすべて架空です。リンクは押しても移動しません。
| 出題画面 | 解説画面 |
|---|---|
anzu-shokuhin.co.jp と anzu-syokuhin.co.jp)は上下に並べ、違う文字を強調します。Esc)。一時停止中はタイマーを止め、時間を止めたまま読めないようにメールを隠します。「やめる」では確認のうえ、ここまでの結果を見るか、スタート画面に戻るかを選べます。途中でやめた記録はベストスコアに反映しません。data/denylist.json)に対する照合を、データ検証で全文に対して行っています。<a href> にせず、どこにも遷移しません。外部の画像・スクリプト・フォントも読み込みません(実行時の外部通信はゼロ)。00-0000-0000 型のダミーだけです(これもデータ検証で確認)。vercel.json で設定しています。
default-src 'none' を基本に、同じサイトの JS・CSS・画像だけを許可しています(script-src 'self'、style-src 'self'、img-src 'self')。外部への通信(connect-src 'none')、フォームの送信先(form-action 'none')、<base> の変更(base-uri 'none')、ほかのサイトへの埋め込み(frame-ancestors 'none')は禁止です。ビルドの結果にインラインのスクリプト・<style> はないため、'unsafe-inline' は使っていません。vite preview にも同じヘッダーを付け(vite.config.ts が vercel.json を読み込む)、全画面の操作中に CSP の違反が1件も出ないことと、外部への fetch が実際に止められることを確かめています。dist/)。サーバー処理・ログイン・実行時の AI 呼び出しはありませんnpm install
npm run dev # 開発サーバー
npm run check # 品質ゲート:データ検証 → 型チェック → テスト → ビルド
| コマンド | 内容 |
|---|---|
npm run validate | 問題データの検証(JSON Schema + 意味検証12ルール) |
npm run typecheck | tsc --noEmit |
npm run test | Vitest(242件) |
npm run build | vite build |
npm run smoke | ビルドした画面を headless Chrome で操作するスモークテスト(118項目。Chrome / Chromium が必要。CHROME_PATH で指定可) |
npm run harness-report | logs/harness-events.jsonl をフック別に集計した表を出す |
data/ 問題(22問)・語彙・指標・業種・使用禁止語の JSON
schemas/ JSON Schema(データ構造の正)
scripts/ データ検証・スモークテスト・ハーネス集計
src/engine DOM に依存しない純粋関数(出題・描画・採点・指標・解説の配置など)
src/ui 画面描画
tests/ Vitest
docs/ tasks.md(作業の状態)、ai-dev-log.md(開発ログ)
.claude/ フック・レビュー用サブエージェント・スキル(ハーネス)
このアプリは、Claude Code に実装を任せつつ、エージェントが自分で品質を確かめ、間違いに気づいて直す仕組み(ハーネス)を先に作ってから開発しました。 AIにコードを書かせること自体よりも、「AIの出力をどう検証し、どこで人間が判断するか」を設計することに重点を置いています。
| 仕組み | 内容 |
|---|---|
仕様書兼作業契約(CLAUDE.md) | 仕様・データ構造・安全ルール・禁止事項・完了の定義を明文化。エージェントはここを基準に動く |
| 決定的な検証器 | JSON Schema+意味検証(正解ラベルと本文の手口が一致しているか、実在企業名が混ざっていないか、ハイライトの範囲が重なっていないか等、12ルール)。検証器自体も、ルールごとの違反データでテスト |
| フック(自動実行) | データ編集のたびに検証/コミット前に全チェック/未完了のまま終わろうとしたら全チェック |
| 作成者と審査者の分離 | 問題を作るエージェントとは別に、読み取り専用のレビュー用サブエージェント(問題内容・UX)を用意 |
各タスクは「テストを先に書く → 実装前に失敗を確かめる → 実装 → npm run check → 失敗なら修正」のループで進行。
停止条件を明示:同じ原因で3回直せなければ止まって人間に報告。Stopフックも同一セッション3回で人間に引き継ぐ(無限ループ防止)。
実績(logs/harness-events.jsonl を npm run harness-report で集計。2026-10-18、vercel.json の追加のコミット前の122件):
| フック | pass | fail | blocked | handoff | 計 |
|---|---|---|---|---|---|
| post-edit-validate | 62 | 11 | 0 | 0 | 73 |
| pre-commit-gate | 42 | 0 | 0 | 0 | 42 |
| stop-gate | 7 | 0 | 0 | 0 | 7 |
npm run check を実行して通していたため、ゲートが止める場面はありませんでした(ゲートは最後の安全網という位置づけです)。自動の検証だけでは足りなかった点も、開発ログ(docs/ai-dev-log.md)に記録しています。
hidden 属性を上書きし、「調べる」前から実際のアドレスが見えていた(答えが見える状態)。型チェック・単体テストでは検出できず、ブラウザで実際の描画を確かめるスモークテストを作り直して見つけました。CLAUDE.md に作業ルールとして明文化し、以後はそのルールで作業しています。docs/tasks.md と git に置き、フェーズごとに会話をリセットしても続きから再開できる構成に。docs/ai-dev-log.md にタスクごとに記録(このREADMEの記述の根拠)。| AI(Claude Code)が担当 | 人間(作者)が担当 |
|---|---|
| 実装・テスト作成・問題文の下書き・セルフレビュー | 仕様とハーネスの設計、問題文の最終承認、業種と手口の選定、実機での確認、デプロイ |
レビュー用サブエージェントは、問題データのレビュー(question-reviewer)をデータを作るタスクのたびに、UI のレビュー(ux-reviewer)をフェーズの区切り・デザインのリニューアル・一時停止機能の追加のあとに計5回実行し、指摘は反映するか、理由を付けて docs/tasks.md に保留として記録しました。
問題はAIで下書きしましたが、公開版は検証済みの静的データだけで動きます。教育ツールで正解や解説が間違っていては意味がないため、生成AIの出力は「人間の承認+決定的な検証」を通したものだけを使う設計にしました。APIキー漏えいや、任意の企業を装った文面の生成に悪用されるリスクもありません。
role="dialog"・aria-modal・ラベル)、フォーカスの移動、読み上げ用の領域に入る文言までです。backdrop-filter)の描画の重さは、実機ではまだ確かめていません。また、iOS の「透明度を下げる」設定は CSS の prefers-reduced-transparency に反映されないため、iPhone ではすりガラスのままになります(コントラストはぼかしに頼らずに確かめています)。問題に出てくるドメイン(data/vocab.json の正規・偽装の69件)が、実在の誰かに使われていないかを確かめています。
npm run check-domains(scripts/check-domains.mjs)で、取得できる単位のドメインごとに NS・SOA のレコードを調べました。69件中3件が実際に運用されていたため、別の架空ドメインに差し替えました(account-support.net → acct-support-desk.net、account-verify.net → kouza-kakunin-center.net、system-notice.net → iryo-system-info.net。差し替えた候補も DNS で見つからないことを確認)。差し替え後は69件すべてで NS・SOA が見つかりません。npm run check-domains を実行して確かめ、使われ始めたドメインは差し替えます。この確認は外部の DNS に問い合わせるため、npm run check には含めていません。MIT License(Copyright (c) 2026 matan-z)で公開しています。
このアプリは、フィッシングメールを見分ける力を身につけるための教育目的のアプリです。登場する企業・団体・ドメインはすべて架空で、実在のものとは関係ありません。