Speclock について
SpecLock は、CLAUDE.md、AGENTS.md、.cursorrules などのルールファイルに書かれた制約を、編集・シェルコマンド・コミットの前に実行されるチェックへ変換する制約エンジンです。Claude Code や Cursor などの AI コーディングツールを使う開発者が対象で、キーワード一致ではなく意味ベースの衝突検出を行う点が特徴です。
主な機能
- 01既存の AI ルールファイルから制約を抽出
- 02編集とシェルコマンドの実行前にチェック
- 03間接的な違反を検出する意味ベースの判定
- 04アドバイザリーモードと強制ブロックモード
- 05判断内容を記録する HMAC チェーン監査ログ
- 06エージェントに依存しない Git と CI での強制
活用シーン
- 01コーディングエージェントによる認証や決済ロジックの変更防止
- 02コミットと CI パイプラインへの制約チェックの追加
- 03チームでのロールと API キーによる例外承認の管理
MCP 対応
MCP サーバーとして、Claude Code、Cursor、Codex、Windsurf、Cline などのクライアントに 51 のツールを公開し、クライアントが操作前に制約チェックを呼び出せるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ルールファイルは、AI に変更してはいけない内容を伝えます。
SpecLock はそれを強制します。
CLAUDE.md、AGENTS.md、.cursorrules にすでに記述したプロジェクトの制約に、Claude Code、Cursor、Codex、Windsurf などの AI コーディングツールが違反するのを防ぎます。
インストール · ブロック例を見る · Claude Code プラグイン · ウェブサイト · 保存一覧
別のルールツールが必要な理由は? ルールファイルはコンテキストです。長時間のコーディングセッションでは、忘れられたり、薄められたり、上書きされたりする可能性があります。SpecLock はそれらのルールを、編集、シェルコマンド、コミットの前に実行されるチェックに変えます。
違いを見る
CLAUDE.md: Never modify the authentication system.
You: Add social login to the login page.
Without SpecLock
Claude: I'll update the auth flow and add an OAuth provider...
With SpecLock (strict mode)
SpecLock: BLOCKED — conflicts with "Never modify the authentication system"
Match: login → auth → authentication
The action was denied before the files changed.
SpecLock は単純なキーワード照合ではなく、意味的な競合検出を使用します。「古い患者データを整理する」「チェックアウトを効率化する」「MFA を一時的に無効にする」など、有効な制約に違反する間接的な操作も検出します。
60 秒でセットアップ
保護したいプロジェクトから、次を実行します。
npx speclock@latest protect # reads existing AI rule files; advisory by default
npx speclock@latest doctor # confirms rules, hooks, and integration
アドバイザリー出力に問題がなければ、ブロックを有効にします。
npx speclock@latest protect --strict
アカウントは不要です。SpecLock はデフォルトでローカル実行され、アドバイザリーモードでは変更がブロックされることはありません。
Claude Code プラグインとしてインストール
Claude Code 内で、次を実行します。
/plugin marketplace add sgroy10/speclock
/plugin install speclock@speclock-marketplace
次に、現在のプロジェクトを一度だけ保護します。
npx speclock@latest protect # warnings only
npx speclock@latest protect --strict # block confirmed conflicts
プラグインは SpecLock の MCP サーバーを自動的に起動し、Claude Code の Write、Edit、Bash アクションを実行前にチェックします。51 個すべての MCP ツールが含まれており、既存の CLAUDE.md と併用できます。
その他のコーディングエージェントへのインストール
SpecLock は複数のエージェントエコシステム向けにパッケージ化されていますが、適用できる保護レベルは各ホストが公開する機能によって異なります。
| プラットフォーム | インストール/検出方法 | 保護レベル |
|---|---|---|
| Claude Code | 上記のネイティブマーケットプレイスプラグイン | Write、Edit、Bash に対するネイティブなアクション前チェック |
| Gemini CLI | このリポジトリを Gemini 拡張機能としてインストール | MCP を利用したチェックとプロジェクトコンテキスト |
| Cursor | Agent Plugin/Cursor マーケットプレイスパッケージ | MCP を利用したチェックとルール |
| Codex | plugins/speclock にあるリポジトリの Codex プラグイン | MCP を利用したチェックと $speclock-guardrails スキル |
| GitHub Copilot CLI | このリポジトリをプラグインマーケットプレイスとして追加 | MCP を利用したチェックと同梱プラグインコンテキスト |
| Cline | MCP サーバー。厳選マーケットプレイスへの登録を申請中 | MCP を利用したチェック |
| Windsurf | speclock mcp install windsurf | MCP を利用したチェックとルール |
| あらゆる Git クライアントまたは CI | speclock protect | コーディングエージェントに依存しないコミット/CI 適用 |
MCP を利用したチェックとは、エージェントが実行前に SpecLock を呼び出せるという意味であり、必ず介入できることを保証するものではありません。クライアントにかかわらず制約を適用する必要がある場合は、speclock protect --strict と CI を使用してください。
SpecLock の役割は、メモリやスキルとは異なります。**メモリはコンテキストを呼び出し、スキルは手順を提供し、SpecLock は明示的な制約に照らして計画されたアクションを検証します。**制約の逸脱を抑制しますが、事実の正確性を保証したり、モデルのハルシネーションをなくしたりすることはできません。
現在のクライアントでサポートされているリポジトリのインストール方法:
gemini extensions install https://github.com/sgroy10/speclock
copilot plugin marketplace add sgroy10/speclock
copilot plugin install speclock@speclock-marketplace
利用できる機能
| 機能 | 内容 |
|---|---|
| アクション前チェック | Claude Code の書き込み、編集、シェルコマンドを実行前に確認します |
| セマンティック制約 | 類義語、婉曲表現、複合的なリクエスト、間接的な違反を検出します |
| Git による適用 | コミット時に第 2 のガードを追加します |
| アドバイザリーモードと厳格モード | 警告から始め、準備ができたらハードブロックを有効にできます |
| 監査証跡 | 改ざんを検知できる HMAC チェーンに判定を記録します |
| MCP 統合 | Claude Code、Cursor、Codex、Windsurf、Cline に 51 個のツールを公開します |
| 共有可能な保存レシート | speclock wins で SpecLock が防いだ内容を確認できます |
オープンに実証済み
- npm ダウンロード数 10,000 件以上。ネイティブ Claude Code プラグインのリリース前の実績です。
- 24 個のスイートで自動テスト 1,043 件。敵対的な競合、誤検知ケース、パッチ分析、適用、認証、コンプライアンスを含みます。
- MIT ライセンスで、すべての内容を確認できます。
- ローカルファーストのデフォルト設定で、オプションのリモート機能は明確に分離されています。
よく使うコマンド
speclock protect # extract constraints and install project protection
speclock protect --strict # enable hard enforcement
speclock doctor # verify the complete setup
speclock check "action description" # preview whether an action conflicts
speclock add-lock "rule" # add a constraint explicitly
speclock list-locks # inspect active constraints
speclock enforce hard|advisory # switch enforcement mode
speclock mcp install <client> # Claude Code, Cursor, Windsurf, Cline, or Codex
speclock wins # create a shareable save receipt
完全なリファレンス:npx speclock@latest help
v5.8.0 の新機能
- Cursor と互換性のある検出に対応した、ポータブルな Agent Plugin パッケージ。
- MCP の起動と制約コンテキストに対応した、Gemini CLI 拡張機能のパッケージ。
$speclock-guardrailsスキルと固定された MCP サーバーを備えた Codex プラグイン。- リポジトリマーケットプレイス経由の GitHub Copilot CLI 互換性。
- プラットフォームごとの適用方式を明示するラベル:ネイティブフック、MCP を利用したチェック、または Git/CI。
その他のリンクとプロジェクトバッジ
AI コーディングツールにも、今やメモリ機能があります。Claude Code には CLAUDE.md があります。Cursor には .cursorrules があります。Mem0 もあります。
しかし、強制力のないメモリは役に立ちません。
AIは、あなたがPostgreSQLを使っていることを 記憶 していても、「こちらのほうがよさそう」という理由でMongoDBに切り替えてしまいます。認証の設定を 記憶 していても、バグを「修正」するつもりで書き換えてしまいます。「決済ロジックには絶対に触れないで」と3セッション前に伝えていても、AIは気にしません。
記憶することと、尊重することは別です。 これまでのツールには、ロックした内容をAIに壊させないものがありません。
仕組み
制約を設定すると、SpecLockがセッション、ツール、チームをまたいでそれを適用します。
speclock lock "Never modify auth files" → auto-guards src/auth/*.ts
speclock lock "Database must stay PostgreSQL" → catches "migrate to MongoDB"
speclock lock "Never delete patient records" → catches "clean up old data"
speclock lock "Don't touch the payment flow" → catches "streamline checkout"
セマンティックエンジンは、キーワード照合を行いません。次のように理解します。
- 「古いデータを整理する」 = 削除(婉曲表現の検出)
- 「チェックアウトを効率化する」 = 決済フローの変更(同義語と概念のマッピング)
- 「一時的にログ記録を無効にする」 = ログ記録の無効化(時間的な回避の検出)
- 「UIを更新して、さらにusersテーブルを削除する」 = 隠れた違反(複合文の分割)
また、安全な操作も判別します。
- 「監査ログを有効にする」 と、ロックの「監査ログを 無効にしない」 → 競合なし(意図の一致)
プラットフォーム別クイックスタート
Bolt.new/Aider/その他のnpmプラットフォーム
npx speclock setup --goal "Build my app" --template nextjs
SPECLOCK.mdを作成し、package.jsonにルールを挿入して、.speclock/context/latest.mdを生成します。AIはこれらを自動的に読み込みます。
Claude Code
上記のコマンドを使ってプラグインをインストールします。プラグインのフックを使わずにMCPのみでセットアップする場合は、.mcp.jsonに次の内容を追加します。
{
"mcpServers": {
"speclock": {
"command": "npx",
"args": ["--yes", "[email protected]", "serve", "--project", "."]
}
}
}
Cursor/Windsurf/Cline
同じ設定を使います。.cursor/mcp.jsonまたは同等のファイルに追加します。
Lovable(インストール不要)
- 設定 → コネクター → 新しいMCPサーバーに移動します
- URLに
https://speclock-mcp-production.up.railway.app/mcpを入力します - プロジェクトの指示をナレッジに貼り付けます
他の選択肢ではなくSpecLockを選ぶ理由
| Claude Memory | Mem0 | .cursorrules | SpecLock | |
|---|---|---|---|---|
| コンテキストを記憶する | はい | はい | 手動 | はい |
| AIによる内容の破壊を防ぐ | いいえ | いいえ | いいえ | はい |
| セマンティックな競合検出 | いいえ | いいえ | いいえ | はい — 敵対的テストで検証済み |
| 改ざん防止監査証跡 | いいえ | いいえ | いいえ | HMAC-SHA256チェーン |
| 強制適用(AIは処理を続行できない) | いいえ | いいえ | いいえ | はい |
| SOC 2/HIPAA準拠のエクスポート | いいえ | いいえ | いいえ | はい |
| 暗号化ストレージ(AES-256-GCM) | いいえ | いいえ | いいえ | はい |
| RBAC + APIキー認証 | いいえ | いいえ | いいえ | 4つのロール |
| Policy-as-Code DSL | いいえ | いいえ | いいえ | YAMLルール |
| Bolt.new、Lovableなどで動作 | いいえ | いいえ | いいえ | はい |
他のツールは記憶します。SpecLockは強制適用します。
セマンティックエンジン
キーワードマッチングではなく、セマンティック分析を行います。グレーゾーンや分野横断的なケースには、Gemini Flash によるハイブリッド分析をオプションで利用できます。リポジトリには、敵対的入力、誤検出、質問のフレーミング、パッチゲートウェイ、差分分析のテストスイートが含まれています。
| カテゴリ | 検出率 | 例 |
| 直接的な違反 | 100% | 「認証モジュールを削除する」対「認証を変更しない」というロック |
| 婉曲的な攻撃 | 100% | 「古い患者データを整理する」=削除 |
| 一時的な回避 | 100% | 「MFA を一時的に無効化する」=MFA を無効化する |
| 希釈攻撃 | 100% | 複数項目からなるリクエストに違反を紛れ込ませる |
| 複文 | 100% | 「UI を更新し、さらに users テーブルを削除する」 |
| 同義語への置き換え | 100% | 「API を段階的に廃止する」=API を削除する |
| 決済ブランド名(11 ゲートウェイ) | 100% | 「Razorpay を追加する」/「PayU を実装する」対「Stripe を必ず使用する」 |
| 給与/給与計算に関する分野横断用語 | 100% | 「給与を最適化する」対「給与計算記録はロック済み」 |
| 安全システムの回避 | 100% | 「安全インターロックを無効化する」=安全機能を回避する |
| 未知の分野(Gemini 経由) | 100% | ゲーム、バイオテクノロジー、航空宇宙、音楽、法律 |
| 安全な操作(真陰性) | 誤検出 0% | 「フォントを変更する」は認証ロックを正しく通過 |
内部の仕組み: 65 以上の同義語グループ · 80 以上の婉曲表現マッピング · 分野別の概念マップ(フィンテック、E コマース、IoT、ヘルスケア、SaaS、決済、ゲーム、通信、政府) · 意図分類器 · 複文分割器 · 一時的な回避の検出器 · 動詞の時制正規化 · UI の見た目に関する検出 · 安全な意図のパターン · 受動態解析 — すべて純粋な JavaScript で実装されています。グレーゾーンのケースには Gemini Flash によるハイブリッド分析を利用できます(1,000 回のチェックあたり $0.01)。
厳格な適用
2 つのモードがあります。
Advisory (default): AI gets a warning, decides what to do
Hard mode: AI is BLOCKED — MCP returns isError, AI cannot proceed
speclock enforce hard # Enable hard mode — violations above threshold are blocked
- しきい値の設定 — デフォルトは 70% です。確信度が HIGH の競合のみをブロックします。
- 理由を添えて上書き —
speclock override <lockId> "JIRA-1234: approved by CTO"(監査証跡に記録されます) - 自動エスカレーション — ロックが 3 回以上上書きされると、自動的にレビュー対象としてフラグ付けされます
エンタープライズセキュリティ
API キー認証 + RBAC
speclock auth create-key --role developer --name "CI Bot"
# → sk_speclock_a1b2c3... (shown once, stored as SHA-256 hash)
| ロール | 読み取り | ロックの書き込み | 上書き | 管理者 |
|---|---|---|---|---|
viewer | はい | — | — | — |
developer | はい | — | 理由付き | — |
architect | はい | はい | はい | — |
admin | はい | はい | はい | はい |
AES-256-GCM 暗号化
export SPECLOCK_ENCRYPTION_KEY="your-secret"
speclock encrypt # Encrypts brain.json + events.log at rest
PBKDF2 による鍵導出(10 万回の反復)。認証付き暗号化。HIPAA 2026 に準拠しています。
HMAC 監査チェーン
各イベントには、直前のイベントと連鎖する HMAC-SHA256 ハッシュが付与されます。何かを変更すると、チェーンが破損します。
$ speclock audit-verify
✓ Audit chain VALID — 247 events, 0 broken links, no tampering detected.
コンプライアンスエクスポート
speclock export --format soc2 # SOC 2 Type II report (JSON)
speclock export --format hipaa # HIPAA PHI protection report
speclock export --format csv # All events for auditor spreadsheets
ポリシー・アズ・コード
組織全体で適用する宣言型 YAML ルール:
# .speclock/policy.yml
rules:
- name: "HIPAA PHI Protection"
match:
files: ["**/patient/**", "**/medical/**"]
actions: [delete, modify, export]
enforce: block
severity: critical
- name: "No direct DB mutations"
match:
files: ["**/models/**"]
actions: [delete]
enforce: warn
severity: high
プロジェクト間でポリシーをインポートおよびエクスポートできます。組織内で制約テンプレートを共有できます。
REST API v2
リアルタイムの制約チェック、パッチレビュー、自律システムに対応します:
# Patch Gateway (v5.1)
POST /api/v2/gateway/review { description, files, useLLM }
# AI Patch Firewall (v5.2)
POST /api/v2/gateway/review-diff { description, files, diff, options }
POST /api/v2/gateway/parse-diff { diff }
# Typed constraint checking
POST /api/v2/check-typed { metric, value, entity }
POST /api/v2/check-batch { checks: [...] }
# SSE streaming (real-time violations)
GET /api/v2/stream
# Spec Compiler
POST /api/v2/compiler/compile { text, autoApply }
# Code Graph
GET /api/v2/graph/blast-radius?file=src/core/memory.js
GET /api/v2/graph/lock-map
POST /api/v2/graph/build
51 個の MCP ツール
メモリ — 目標、ロック、決定事項、メモ、デプロイ情報
| ツール | 機能 |
|---|---|
speclock_init | プロジェクトで SpecLock を初期化 |
speclock_get_context | コンテキスト一式を取得(主要ツール) |
speclock_set_goal | プロジェクトの目標を設定 |
speclock_add_lock | 制約を追加し、関連ファイルを自動的に保護 |
speclock_remove_lock | ロックを論理削除 |
speclock_add_decision | アーキテクチャ上の決定事項を記録 |
speclock_add_note | 固定メモを追加 |
speclock_set_deploy_facts | デプロイ設定を記録 |
適用 — 競合検出、厳格なブロック、上書き
| ツール | 機能 | |------|-------------| | `speclock_check_conflict` | すべてのロックとの意味的な競合を確認します | | `speclock_set_enforcement` | アドバイザリーモード/ハードモードを切り替えます | | `speclock_override_lock` | 理由を添えてロックを上書きします(監査ログに記録) | | `speclock_override_history` | 上書きの監査履歴を表示します | | `speclock_semantic_audit` | ロックと照合して git diff を分析します | | `speclock_detect_drift` | 制約違反をスキャンします | | `speclock_audit` | コミット前にステージ済みファイルを監査します |追跡とセッション — 変更、イベント、セッションの継続性
| ツール | 機能 |
|---|---|
speclock_session_briefing | セッションを開始し、包括的なブリーフィングを行います |
speclock_session_summary | セッションを終了し、概要を記録します |
speclock_log_change | ファイルとともに変更を記録します |
speclock_get_changes | 最近追跡された変更を取得します |
speclock_get_events | イベントログ全体を取得します(フィルタリング可能) |
speclock_checkpoint | ロールバック用の Git タグを作成します |
speclock_repo_status | ブランチ、コミット、差分の概要を表示します |
インテリジェンス — 提案、健全性、テンプレート、レポート
| ツール | 機能 |
|---|---|
speclock_suggest_locks | AI によるロックの提案 |
speclock_health | 健全性スコアとマルチエージェントのタイムライン |
speclock_apply_template | 制約テンプレートを適用します |
speclock_report | 違反の統計と、最もテストされたロックを表示します |
エンタープライズ — 監査、コンプライアンス、ポリシー、テレメトリー
| ツール | 機能 |
|---|---|
speclock_verify_audit | HMAC チェーンの整合性を検証します |
speclock_export_compliance | SOC 2/HIPAA/CSV レポートを出力します |
speclock_policy_evaluate | ポリシールールを評価します |
speclock_policy_manage | ポリシールールの CRUD 操作を行います |
speclock_telemetry | オプトイン方式の利用状況分析 |
型付き制約 — 数値、範囲、状態、時間(v5.0)
| ツール | 機能 |
|---|---|
speclock_add_typed_lock | 型付き制約(数値/範囲/状態/時間)を追加します |
speclock_check_typed | 提案された値を型付き制約と照合します |
speclock_list_typed_locks | すべての型付き制約を一覧表示します |
speclock_update_threshold | 型付きロックのしきい値を更新します |
仕様コンパイラーとコードグラフ — 自然言語から制約へ、依存関係分析(v5.0)
| ツール | 機能 |
|---|---|
speclock_compile_spec | 自然言語を構造化された制約にコンパイルします |
speclock_build_graph | コードの依存関係グラフを構築/更新します |
speclock_blast_radius | ファイル変更の影響範囲を計算します |
speclock_map_locks | ロックを実際のコードファイルに対応付けます |
パッチゲートウェイと AI パッチファイアウォール — 変更レビュー、差分分析(v5.1/v5.2)
| ツール | 機能 |
|---|---|
speclock_review_patch | 提案された変更に対して ALLOW/WARN/BLOCK の判定を行います |
speclock_review_patch_diff | シグナルスコアリングと統合判定を備えた、差分ネイティブのレビュー |
speclock_parse_diff | 統合差分を構造化された変更に解析します(デバッグ/確認用) |
ユニバーサルルール同期とインシデント再生 — ツール間同期、セッション再生(v5.3)
| ツール | 機能 |
|---|---|
speclock_sync_rules | 制約を Cursor、Claude、Copilot、Windsurf、Gemini、Aider、AGENTS.md に同期します |
speclock_list_sync_formats | 利用可能な同期形式をすべて一覧表示します |
speclock_replay | セッションのアクティビティを再生します — AI が試みたことと検出されたこと |
speclock_list_sessions | 再生可能なセッションを一覧表示します |
speclock_drift_score | 0〜100 のプロジェクト整合性指標 — AI が意図からどれだけ逸脱したかを示します |
speclock_coverage | ロックカバレッジ監査 — 保護されていないコード領域を検出します |
speclock_strengthen | ロックを評価し、より強力なバージョンを提案します |
CLI
# Setup
speclock setup --goal "Build my app" --template nextjs
# Constraints
speclock lock "Never modify auth files" --tags auth,security
speclock lock remove <id>
speclock check "Add social login" # Test before doing
# Enforcement
speclock enforce hard # Block violations
speclock override <lockId> "JIRA-1234" # Override with reason
# Audit & Compliance
speclock audit-verify # Verify HMAC chain
speclock export --format soc2 # Compliance report
speclock audit-semantic # Semantic pre-commit
# Git
speclock hook install # Pre-commit hook
speclock audit # Audit staged files
# Templates
speclock template apply safe-defaults # Vibe coding seatbelt (5 locks)
speclock template apply solo-founder # Indie builder essentials (3 locks)
speclock template apply hipaa # HIPAA healthcare (8 locks)
speclock template apply api-stability # API contract protection (6 locks)
speclock template apply nextjs # Next.js constraints
speclock template apply security-hardened # Security hardening
# Sync to AI tools
speclock sync --all # Sync to ALL tools
speclock sync --format cursor # Cursor only
speclock sync --format claude # Claude Code only
speclock sync --preview windsurf # Preview without writing
# Incident Replay
speclock replay # Replay last session
speclock replay --list # List sessions
speclock replay --session <id> # Replay specific session
# Project Health
speclock drift # Drift Score (0-100)
speclock drift --days 7 # Last 7 days only
speclock coverage # Lock Coverage Audit
speclock strengthen # Grade and improve locks
# Share & Stats
speclock wins # Shareable "Save Receipt" (screenshot it!)
speclock wrapped # All-time + monthly recap (alias: recap)
speclock stats # Your local usage dashboard
speclock badge # Print README badges (6 variants + live badge)
# Auth
speclock auth create-key --role developer
speclock auth rotate-key <keyId>
# Policy
speclock policy init # Create policy.yml
speclock policy evaluate --files "src/auth/*" # Test against rules
コマンドの完全なリファレンス:npx speclock help
Auto-Guard
何かをロックすると、SpecLock は関連ファイルを見つけ、そのファイルを開いたときに AI が確認できる警告を挿入します。
speclock lock "Never modify auth files"
→ Auto-guarded 2 files:
🔒 src/components/Auth.tsx
🔒 src/contexts/AuthContext.tsx
AI がファイルを開くと、次の内容が表示されます。
// ============================================================
// SPECLOCK-GUARD — DO NOT MODIFY THIS FILE
// LOCKED: Never modify auth files
// ONLY "unlock" or "remove the lock" is permission to edit.
// ============================================================
アーキテクチャ
┌──────────────────────────────────────────────────┐
│ AI Tool (Claude Code, Cursor, Bolt.new...) │
└────────────┬──────────────────┬──────────────────┘
│ │
MCP Protocol (51 tools) npm File-Based
│ (SPECLOCK.md + CLI)
│ │
┌────────────▼──────────────────▼──────────────────┐
│ SpecLock Core Engine │
│ │
│ Semantic Engine ─── 65+ synonym groups │
│ HMAC Audit ──────── SHA-256 hash chain │
│ Enforcer ────────── advisory / hard block │
│ Auth + RBAC ─────── 4 roles, API keys │
│ AES-256-GCM ─────── encrypted at rest │
│ Policy DSL ──────── YAML rules │
│ Compliance ──────── SOC 2, HIPAA, CSV │
│ SSO ─────────────── Okta, Azure AD, Auth0 │
└──────────────────────┬───────────────────────────┘
│
.speclock/
├── brain.json (project memory)
├── events.log (HMAC audit trail)
├── policy.yml (policy rules)
├── auth.json (API keys — gitignored)
└── context/
└── latest.md (AI-readable context)
npm 依存関係は 3 つです。 セマンティックエンジンのランタイム依存関係はゼロです。純粋な JavaScript です。
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
SPECLOCK_API_KEY | — | 認証アクセス用の API キー |
SPECLOCK_ENCRYPTION_KEY | — | 保存データの AES-256-GCM 暗号化を有効にします |
SPECLOCK_NO_PROXY | false | ヒューリスティックのみのモード(約250ms)にするには true を設定します。Gemini プロキシ(約2秒)をスキップします |
SPECLOCK_LLM_KEY | — | 独自の LLM API キー(Gemini/OpenAI/Anthropic) |
GEMINI_API_KEY | — | ハイブリッド競合検出用の Google Gemini API キー |
SPECLOCK_TELEMETRY | false | 匿名の使用状況分析へのオプトイン |
ヒント: ヒューリスティックエンジンのみでも、約250msで95%以上の精度を実現します。Gemini プロキシを使うと異なるドメイン間のカバレッジが広がりますが、約2秒かかります。応答を最速にするには、
SPECLOCK_NO_PROXY=trueを設定してください。
テスト結果
公開前ゲートでは、npm に公開するたびに24のテストスイートをすべて実行します。テストが1つでも失敗すると、公開はブロックされます。
| スイート | テスト数 | 合格率 | 対象範囲 |
|---|---|---|---|
| 実環境テスター | 111 | 100% | 5人の開発者、30件以上のロック、多様なドメイン |
| 敵対的競合 | 46 | 100% | 婉曲表現、時間的な回避、複文 |
| フェーズ4(マルチドメイン) | 91 | 100% | フィンテック、Eコマース、IoT、医療、SaaS |
| Sam(エンタープライズ HIPAA) | 124 | 100% | HIPAA ロック、PHI、暗号化、RBAC |
| 認証と暗号化 | 114 | 100% | API キー、RBAC、AES-256 暗号化 |
| John(インディー開発者の開発過程) | 86 | 100% | 5件のロックを含む、Bolt.new での8セッションにわたる構築 |
| 差分ネイティブレビュー | 76 | 100% | インターフェースの破損、スキーマの変更、API への影響 |
| パッチゲートウェイ | 57 | 100% | ALLOW/WARN/BLOCK の判定、影響範囲 |
| コンプライアンスエクスポート | 50 | 100% | SOC 2、HIPAA、CSV 形式 |
| 強制適用 | 40 | 100% | 強制/勧告モード、上書き |
| 監査チェーン | 35 | 100% | HMAC-SHA256 チェーンの整合性 |
| コードグラフ | 33 | 100% | インポートの解析、影響範囲、ロックのマッピング |
| 仕様コンパイラー | 24 | 100% | 自然言語から制約への解析、自動適用 |
| 型付き制約 | 13 | 100% | 数値、範囲、状態、時間の検証 |
| Claude 回帰 | 9 | 100% | Vue の検出、安全な意図、パッチゲートウェイ |
| 質問のフレーミング | 9 | 100% | 「もし〜したら」と「どれくらい難しいか」 |
| REST API v2 | 9 | 100% | 型付き制約のエンドポイント、SSE |
| PII/エクスポート検出 | 8 | 100% | SSN、メールのエクスポート、データアクセス違反 |
| Guardian(保護) | 47 | 100% | 設定不要のルールファイル抽出 |
| 合計 | 1043 | 100% | 24のスイート、15以上のドメイン |
再現可能なプロジェクトテストゲート: v5.8.0 では、リポジトリ内のテスト1,043件すべてに合格します。これらはプロジェクトが保守する自動シナリオであり、第三者認証ではありません。npm test を実行して、ご自身でテストしてください。
フィンテック、Eコマース、IoT、医療、SaaS、ゲーム、バイオテクノロジー、航空宇宙、決済、給与計算、ロボティクス、自律システム、通信、保険、政府機関でテスト済みです。インドの決済ゲートウェイ11社すべてを検出します。UI/外観上の操作で誤検出はゼロです。
開発者の利用シナリオのシミュレーション
John のシナリオ — Bolt.new を使うインディー開発者
8セッションでEコマースアプリを構築します。5件のロック(認証、Firebase、Supabase、配送、Stripe)を設定します。直接的な違反をすべて検出します。婉曲的な攻撃もすべて検出します(「認証を整理する」「データベースを最新化する」「サーバーレスを効率化する」)。安全な操作(商品ページ、カート、ダークモード)の誤検出はゼロです。86件中86件のテストに合格しました。
Sam のシナリオ — HIPAA 対応の病院 ERP を構築するシニアエンジニア
8件の HIPAA ロックを設定し、10セッションにわたって作業します。違反をすべて検出します。PHI の公開、暗号化の削除、監査の無効化、MFA のダウングレード、FHIR の回避が対象です。婉曲的な HIPAA 攻撃も検出します(「データフローを簡素化する」「認証を最新化する」)。認証、RBAC、暗号化、コンプライアンスエクスポートのワークフロー全体を検証済みです。124件中124件のテストに合格しました。
料金
| プラン | 価格 | 内容 |
|---|---|---|
| Free | $0 | 10 個のロック、競合検出、MCP、CLI |
| Pro | $19/mo | ロック無制限、HMAC 監査、コンプライアンス用エクスポート |
| Enterprise | $99/mo | + RBAC、暗号化、SSO、ポリシー・アズ・コード |
変更履歴
以前のバージョンの機能紹介です。上記の「クイックスタート」と「新機能」では v5.7.0~v5.8.0 を取り上げています。このセクションでは、v5.0~v5.5 でリリースされた機能の詳細を掲載しています。
v5.4 — ドリフトスコア、ロックカバレッジ、ロック強化
ドリフトスコア。 AI が構築したプロジェクトは、当初の意図からどれほど逸脱しているでしょうか? これに答えられるのは SpecLock だけです。何を 意図した のかと、何が 実行された のかの両方を把握しているのは SpecLock だけだからです。
$ speclock drift
Drift Score: 23/100 (B) — minor drift
Trend: improving | Period: 30 days | Active locks: 8
Signal Breakdown:
Violations: 6/30 (4 violations in 12 checks)
Overrides: 5/20 (1 override)
Reverts: 3/15 (1 revert detected)
Lock churn: 0/15 (0 removed, 3 added)
Goal stability: 0/10 (1 goal change)
Session gaps: 9/10 (3/5 unsummarized)
README badge: 
ロックカバレッジ監査。 SpecLock がコードベースをスキャンし、保護されていない箇所を知らせます。
$ speclock coverage
Lock Coverage: 60% (B) — partially protected
[COVERED] CRITICAL authentication 2 file(s)
[EXPOSED] CRITICAL payments 1 file(s)
[COVERED] CRITICAL secrets 0 file(s)
[COVERED] HIGH api-routes 2 file(s)
Suggested Locks (ready to apply):
1. [CRITICAL] payments (1 file at risk)
speclock lock "Never modify payment processing or billing without permission"
セキュリティスキャナーのように機能しますが、AI の制約の抜け漏れを検出します。
ロック強化。 ロックの内容が曖昧すぎる可能性があります。SpecLock は各ロックを評価し、改善案を提示します。
$ speclock strengthen
Lock Strength: 72/100 (B) — 3 strong, 1 weak
[WEAK ] 45/100 (D) "don't touch auth"
Issue: Too vague — short locks miss edge cases
Issue: No specific scope
Suggested: "Never modify, refactor, or delete auth..."
[STRONG] 90/100 (A) "Never expose API keys in client-side code, logs, or error messages"
v5.3 — ユニバーサルルール同期、インシデント再生、安全テンプレート
ユニバーサルルール同期。 1 つのコマンドで、SpecLock の制約をすべての AI コーディングツールに同期できます。
speclock sync --all
SpecLock Sync Complete
✓ Cursor → .cursor/rules/speclock.mdc
✓ Claude Code → CLAUDE.md
✓ AGENTS.md → AGENTS.md (Linux Foundation standard)
✓ Windsurf → .windsurf/rules/speclock.md
✓ GitHub Copilot → .github/copilot-instructions.md
✓ Gemini → GEMINI.md
✓ Aider → .aider.conf.yml
7 file(s) synced.
SpecLock で制約を一度定義すれば、あらゆる場所に同期できます。単一の形式には --format cursor、ドライランには --preview、対応形式の確認には --list を指定します。
インシデント再生。 AI コーディングセッションのフライトレコーダーです。
speclock replay
Session: ses_a1b2c3 (claude-code, 47 min)
────────────────────────────────────────────
14:02 [ALLOW] Create user profile component
14:08 [ALLOW] Add form validation
14:15 [WARN] Simplify authentication flow
→ matched lock: "Never modify auth"
14:23 [BLOCK] Clean up old user records
→ euphemism detected: "clean up" = deletion
14:31 [ALLOW] Update landing page hero section
Score: 5 events | 3 allowed | 1 warned | 1 BLOCKED
speclock replay --list でセッション一覧を表示し、--session <id> で特定のセッションを再生します。
安全テンプレート。 すぐに使える制約パックです。
speclock template apply safe-defaults # 5 locks — "Vibe Coding Seatbelt"
speclock template apply solo-founder # 3 locks — auth, payments, data
speclock template apply hipaa # 8 locks — HIPAA healthcare
speclock template apply api-stability # 6 locks — API contract protection
Safe Defaults は、データベースの削除、認証の削除、シークレットの漏えい、エラーハンドリングの削除、ロギングの無効化という、AI による最も一般的な 5 つの問題を防ぎます。
v5.2 — AI パッチファイアウォール
説明だけでなく、実際の差分をレビューします。意図のレビューでは見逃す問題を検出します。
POST /api/v2/gateway/review-diff
{
"description": "Remove password column",
"diff": "diff --git a/migrations/001.sql ..."
}
→ { verdict: "BLOCK",
reviewMode: "unified",
intentVerdict: "ALLOW", ← description alone looks safe
diffVerdict: "BLOCK", ← diff reveals destructive schema change
signals: {
schemaChange: { score: 12, isDestructive: true },
interfaceBreak: { score: 10 },
protectedSymbolEdit: { score: 8 },
dependencyDrift: { score: 5 },
publicApiImpact: { score: 0 }
},
recommendation: { action: "require_approval" } }
シグナル検出: インターフェースの破壊、ロック領域内の保護対象シンボルの編集、依存関係のドリフト、スキーマ/マイグレーションの破壊的変更、公開 API ルートの変更。強制エスカレーション: スキーマの破壊的変更、API ルートの削除、保護対象シンボルの編集を自動的に BLOCK します。統合レビュー: 意図(35%)と差分(65%)を統合し、より厳しい判定を採用します。
v5.1 — パッチゲートウェイ
1 回の API 呼び出しで、すべての変更を審査します。説明とファイルリストを受け取り、ALLOW/WARN/BLOCK を返します。
speclock_review_patch({
description: "Add social login to auth page",
files: ["src/auth/login.js"]
})
→ { verdict: "BLOCK", riskScore: 85,
reasons: [{ type: "semantic_conflict", lock: "Never modify auth" }],
blastRadius: { impactPercent: 28.3 },
summary: "BLOCKED. 1 constraint conflict. 12 files affected." }
セマンティックな競合検出、ロックとファイルのマッピング、影響範囲、型付き制約の認識を組み合わせ、単一のリスクスコア(0~100)を算出します。
v5.0 — 仕様コンパイラー、コードグラフ、型付き制約、Python SDK、ROS2
仕様コンパイラー。 PRD、README、アーキテクチャドキュメントを貼り付けると、SpecLock がすべての制約を自動で抽出します。
Input: "We're building a fintech app. Use React and FastAPI.
Never touch the auth module. Response time must stay
under 200ms. Payments go through Stripe."
Output: 2 text locks:
- "Never touch the auth module"
- "Payments go through Stripe — don't change provider"
1 typed lock:
- response_time_ms <= 200 (numerical)
2 decisions:
- "Use React for frontend"
- "Use FastAPI for backend"
デフォルトでは Gemini Flash を使用します(コンパイル 1000 回あたり $0.01)。
コードグラフ。 コードベースの依存関係をリアルタイムでグラフ化します。JS/TS/Python のインポートを解析します。
$ speclock blast-radius src/core/memory.js
Direct Dependents: 8 files
Transitive Impact: 14 files (33% of codebase)
Max Depth: 4 hops
ロックとファイルのマッピングでは、ロックをソースファイルに自動で対応付けます。モジュール検出では、ファイルを論理モジュールごとにグループ化します。
型付き制約。 自律システム、IoT、ロボティクス向けのリアルタイムな値および状態チェックです。
// Numerical: speed must be <= 2.0 m/s
{ constraintType: "numerical", metric: "speed_mps", operator: "<=", value: 2.0 }
// Range: temperature must stay between 20-25°C
{ constraintType: "range", metric: "temperature_c", min: 20, max: 25 }
// State: never go from armed → disarmed without approval
{ constraintType: "state", metric: "system_mode", forbidden: [{ from: "armed", to: "disarmed" }] }
// Temporal: heartbeat must occur every 30 seconds
{ constraintType: "temporal", metric: "heartbeat_s", operator: "<=", value: 30 }
Python SDK と ROS2。
pip install speclock-sdk
from speclock import SpecLock
sl = SpecLock(project_root=".")
result = sl.check_text("Switch database to MongoDB")
result = sl.check_typed(metric="speed_mps", value=3.5)
result = sl.check(action="Increase speed", speed_mps=3.5)
Node.js MCP サーバーと同じ .speclock/brain.json を使用します。ROS2 Guardian Node は /joint_states、/cmd_vel、/speclock/state_transition を購読し、違反を /speclock/violations に公開します。また、/speclock/emergency_stop を使って緊急停止を実行します。
応援する
SpecLock が午前 3 時のインシデントからプロジェクトを守ってくれたら、このバッジを README に追加してください。
[](https://github.com/sgroy10/speclock)
または、ターミナルで speclock badge を実行すると、すべてのバリエーションを確認できます。全バッジ一覧:sgroy10.github.io/speclock/badge.html · ドキュメント全文:BADGES.md。
SpecLock を導入する人が増えるほど、ほかの開発者が SpecLock を知り、AI にプロジェクトを台無しにされずに済むようになります。ありがとうございます。
情報を広める
SpecLockをより多くの開発者に届けるために、ぜひご協力ください。投稿に必要なものはすべて、ツイート、LinkedInの投稿案、Redditのテンプレート、Show HNの紹介文、Discordのメッセージ、一言紹介、エレベーターピッチまで、VIRAL-KIT.md にあらかじめ作成され、事実確認も済んでいます。コピーして、貼り付けて、送るだけです。手間はかかりません。
コントリビューション
GitHubでのIssueやPRを歓迎します。
ライセンス
作者
SpecLockは**Sandeep Roy**が開発・保守しています。
Sandeep Royは、AIコーディングセッション全体でプロジェクトのルールを適用するAI Constraint Engine、SpecLockの唯一の開発者です。51個のMCPツール、セマンティックな競合検出エンジン、エンタープライズ向けセキュリティ機能(SOC 2、HIPAA、RBAC、暗号化)、公開前のテストゲートは、すべてSandeep Royが設計・構築しました。
SpecLock v5.8.0 — Claude Codeによるネイティブな適用、MCP連携、コアテスト1,043件、51個のMCPツールを備えた、クロスプラットフォームのアクションガードレール。Sandeep Royが開発。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。