https://github.com/anrylu/infer-spec
Reverse-infer OpenSpec specs from codebase + git history + docs. For legacy code without specs.
https://github.com/anrylu/infer-spec
agentic brownfield claude-code claude-skill dds legacy-code openspec sdd spec-driven-development
Last synced: 1 day ago
JSON representation
Reverse-infer OpenSpec specs from codebase + git history + docs. For legacy code without specs.
- Host: GitHub
- URL: https://github.com/anrylu/infer-spec
- Owner: anrylu
- Created: 2026-05-20T07:54:13.000Z (14 days ago)
- Default Branch: master
- Last Pushed: 2026-05-29T01:41:24.000Z (6 days ago)
- Last Synced: 2026-05-29T02:07:43.181Z (5 days ago)
- Topics: agentic, brownfield, claude-code, claude-skill, dds, legacy-code, openspec, sdd, spec-driven-development
- Language: Python
- Homepage:
- Size: 91.8 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ja.md
Awesome Lists containing this project
README
[English](/README.md) | [繁體中文](/README.zh-tw.md) | [简体中文](/README.zh-cn.md) | [日本語](/README.ja.md)
# InferSpec
**コードベース + Git 履歴 + ドキュメントから OpenSpec 仕様書を逆推論** —
仕様書のない legacy code のために設計されています。
[](https://github.com/anrylu/infer-spec/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
> **Development-Driven Spec (DDS)** — Spec-Driven Development の逆向きの実践。
> From Code & Context to Clear Specs.
## SDD vs DDS
[Spec-Driven Development(SDD)](https://github.com/Fission-AI/OpenSpec)は、
まず仕様書を書き、それに沿って実装するという開発規律で、greenfield プロジ
ェクトには非常に有効です。
**しかし現実の多くは brownfield。** あなたは 5 万行ある Flask サービスを引き
継いだ。仕様書は存在しない — 3 年放置された Jira ボード、誰も更新しない
Confluence wiki、そして Git log だけ。SDD はここに入口がありません。
**InferSpec はこのループを反転させます — Development-Driven Spec(DDS)。**
コードはすでに存在する。これ(+ git 履歴、チケット、ドキュメント、MCP 接続
の wiki)を真実の源として扱い、構造化された OpenSpec 仕様書を*逆推論*し
ます。仕様書が揃ったら、新機能には SDD に戻ればよい。
| モード | 起点 | 成果物 |
|--------|------|--------|
| **SDD**(Spec-Driven Development) | 仕様書 | コード |
| **DDS**(Development-Driven Spec) | コード + 履歴 + ドキュメント | 仕様書 |
## なぜ InferSpec?
**InferSpec はその全てを読み**、構造化された OpenSpec 仕様書を生成します — capability ごとに 1 つの `spec.md`、各 Requirement は `file:line` または ticket ID へ引用付き。AI が不確実な箇所は `[GAP]`/`[TBD]` でマークされ、後でインタラクティブに埋められます。
## 仕組み
```
┌─────────────────────────────────────────────────────────────┐
│ Layer 1 — uvx Python パッケージ: installer + CLI │
│ (LLM API は決して呼びません) │
└─────────────────────────────────────────────────────────────┘
│ skill をインストール
▼
┌─────────────────────────────────────────────────────────────┐
│ Layer 2 — Skill は Claude Code / Codex / Gemini / Copilot │
│ / OpenCode 内で動作し、host の subscription AI を使う │
└─────────────────────────────────────────────────────────────┘
```
InferSpec はあなたが既に契約している AI サブスクリプションに依存します。API key も不要、クラウド endpoint の設定も不要です。
## インストール
```bash
uvx inferspec init --platform claude-code
```
これでカレントディレクトリの `.claude/skills/` に `/inferspec-scan` +
`/inferspec-cap` がインストールされます。サポート対象プラットフォームの全
リストは `inferspec platforms` で確認できます。
### アップデート
`inferspec` パッケージの新版がリリースされても、各 repo の `.claude/skills/`
(または同等のパス)配下にある skill ファイルはインストール時のバージョン
のままです。次の手順で更新してください:
```bash
pip install -U inferspec # または:uvx --refresh inferspec ...
inferspec update # `inferspec init` を実行した各 repo で
```
`inferspec update` は `.inferspec.yaml` を読み込み、以前選んだ platforms に対
して skill bundle を再コピーします(再質問なし)。`inferspec update --check`
で書き込みなしのドリフト確認、`inferspec doctor` で platform ごとの「インス
トール済み vs パッケージ」バージョン比較が可能です。
## 使い方
対象 repo で AI agent を開く。2 つの skill が利用可能:
**`/inferspec-scan`** — bulk モード、全 capability の spec を一括推論:
```
/inferspec-scan
```
`graphify` でファイルを capability にクラスタリングし、各 cap ごとに code +
`git log` + `docs/` + (利用可能なら) MCP 経由の Jira/Confluence + host の
WebFetch 経由の URL を読み、OpenSpec 形式で `openspec/specs//spec.md` を
生成。AI が不確実な箇所は `[GAP]` / `[TBD]` でマーク。
**`/inferspec-cap `** — 単一 cap の深掘り + インタラクティブ Q&A:
```
/inferspec-cap user-auth
/inferspec-cap "rate limiting" # ファジーマッチ
/inferspec-cap # インタラクティブ選択
/inferspec-cap new-feature --new # 新規 cap bootstrap
```
単一 cap について、skill が Jira/Confluence/URL を能動的に尋ね、各 `[GAP]`
マーカーに対し焦点を絞った質問を spec が収束するまで 1 つずつ提示。終了時に
コミット要否を確認。
外部データソース(Jira、Confluence、URL)は自動処理 — InferSpec は host 環境
の MCP server を検出するため、独自 client は持たない。
## 出力フォーマット
[OpenSpec](https://github.com/Fission-AI/OpenSpec) と同じ規約:
```markdown
## Purpose
注文ポータルのユーザー認証 — incident-1234 を受けて旧 SSO bridge を置き換え。
AUTH-456 参照。
## Requirements
### Requirement: Rate Limiting
システムは 60 秒以内に 5 回失敗したログイン試行を SHALL 拒否する。
**Source:** auth.py:18-21, [JIRA AUTH-456]
#### Scenario: 連続失敗後のロックアウト
- **GIVEN** 過去 1 分以内に 5 回失敗
- **WHEN** さらに POST /auth/login が到達
- **THEN** server が 429 を返す
```
## ステータス
**v0.3 alpha**。以下を提供:
- `/inferspec-scan` — bulk モード、加えて design-doc 自動探索、OpenAPI/Swagger
検出、`--since ` 増分スキャン、用語集の強制(`.inferspec-glossary.txt`)、
削除提案(静かに消さず `openspec/changes/` に出力)
- `/inferspec-cap ` — インタラクティブ単一 cap モード、既存 spec の
gap-fill にも対応
- `inferspec update` — 各 repo でインストール済み skill bundle を再リフレッシュ
## License
MIT