[Extension]: Add ThreatSpec (v0.1.0)

未关闭 适合新手
#4,660 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
62/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
python
领域
cli, tooling

调研方向

首先找到 catalog 文件,并将其预期的条目格式与提议的 catalog 条目和 extension.yml 清单进行比较。验证提交内容中所述的下载 URL、README.md、LICENSE 和命令文件;当元数据被接受且扩展能够通过文档中记录的 URL 成功安装时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

enhancement needs-triage triage-can-wait
Extension ID

threatspec

Extension Name

ThreatSpec

Version

0.1.0

Description

ThreatSpec is a spec-kit extension that makes threat modeling and security traceability a first-class part of Spec-Driven Development.

Author

hupe1980

Repository URL

https://github.com/hupe1980/spec-kit-threatspec

Download URL

https://github.com/hupe1980/spec-kit-threatspec/archive/refs/tags/v0.1.0.zip

License

MIT

Homepage (optional)

https://github.com/hupe1980/spec-kit-threatspec

Documentation URL (optional)

https://github.com/hupe1980/spec-kit-threatspec/blob/main/README.md

Changelog URL (optional)

https://github.com/hupe1980/spec-kit-threatspec/blob/main/CHANGELOG.md

Required Spec Kit Version

=1.0.0

Required Tools (optional)
- python (>=3.8) - required, with PyYAML; the bash and PowerShell wrappers fall back to `uv run --with pyyaml --with jsonschema` when no local PyYAML is present
- uv - optional, only needed as that fallback
- jsonschema - optional, enables full JSON Schema validation; a built-in structural validator runs without it
Number of Commands

3

Number of Hooks (optional)

7

Tags

security, threat-modeling, llm, agentic, traceability

Key Features
  • Generates an Open Threat Model (OTM)-compatible threat-model.yaml from spec.md and plan.md, validated by a bundled JSON Schema
  • Publishes testable SR-### security requirements into spec.md between managed markers, so /speckit.plan and /speckit.tasks consume them natively
  • Twelve deterministic checks (schema, dangling references, threat→mitigation→requirement→task→verification coverage, risk-decision expiry, spec drift) with md, json, and SARIF output for GitHub code scanning
  • Evidence-based security convergence: the agent judges each requirement only from collected evidence, verified requires an inspectable pointer, verification history is append-only, and gaps are appended to tasks.md as traceable tasks
  • Threat profiles for STRIDE, OWASP Top 10 for LLM Applications 2026, and OWASP Top 10 for Agentic Applications 2026, with edition-pinned framework mappings and applicability surfaces
  • Runs without an agent: the engine is a plain Python script usable in CI, plus a bundled composite GitHub Action
  • Seven optional lifecycle hooks (after_specify through before_converge); installing the extension changes nothing until you opt in
Testing Checklist
  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project
Submission Requirements
  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)
Testing Details

Tested on:

  • macOS 15 with Spec Kit CLI v1.0.7 (dev install, archive URL install, and self-hosted catalog install)
  • GitHub Actions CI: Ubuntu and Windows, Python 3.11 and 3.13

Test project: an internal link shortener built end to end with the full nine-step workflow, from /speckit.specify through to security convergence.

Test scenarios:

  1. Installed the extension three ways: --dev, --from <archive URL>, and by name from a self-hosted catalog; confirmed .extensionignore keeps tests and docs out of the install
  2. Ran all three commands as agent skills against real specs; verified each writes only its documented files
  3. Ran the full lifecycle on the test project: 20 threats modelled, 16 security requirements, 46 tasks, 106 application tests, final status CONVERGED
  4. Verified append-only guarantees: tasks.md unchanged when converged, no duplicate tasks on repeated convergence runs, verification history never rewritten
  5. Verified the deterministic engine standalone: valid SARIF 2.1.0 output, exit codes 0/1/2 by severity, CRLF checkouts produce no false drift
  6. Extension test suite: 46 passing, including manifest validation against the Spec Kit CLI's own ExtensionManifest
Example Usage
# Install
specify extension add threatspec --from https://github.com/hupe1980/spec-kit-threatspec/archive/refs/tags/v0.1.0.zip

# Model threats from the spec, then check the chain before implementing
/speckit.threatspec.model
/speckit.threatspec.check

# After implementation, verify every security requirement against evidence
/speckit.threatspec.converge

# The same checks run without an agent, for CI
.specify/extensions/threatspec/scripts/bash/threatspec.sh check --format sarif --output threatspec.sarif
Proposed Catalog Entry
{
  "threatspec": {
    "name": "ThreatSpec — Threat Modeling & Security Traceability",
    "id": "threatspec",
    "description": "STRIDE and AI/ML threat modeling with threat-to-test traceability and security convergence",
    "author": "hupe1980",
    "version": "0.1.0",
    "download_url": "https://github.com/hupe1980/spec-kit-threatspec/archive/refs/tags/v0.1.0.zip",
    "repository": "https://github.com/hupe1980/spec-kit-threatspec",
    "homepage": "https://github.com/hupe1980/spec-kit-threatspec",
    "documentation": "https://github.com/hupe1980/spec-kit-threatspec/blob/main/README.md",
    "changelog": "https://github.com/hupe1980/spec-kit-threatspec/blob/main/CHANGELOG.md",
    "license": "MIT",
    "category": "process",
    "effect": "read-write",
    "requires": {
      "speckit_version": ">=1.0.0"
    },
    "provides": {
      "commands": 3,
      "hooks": 7
    },
    "tags": ["security", "threat-modeling", "llm", "agentic", "traceability"],
    "verified": false,
    "downloads": 0,
    "stars": 0,
    "created_at": "2026-09-21T00:00:00Z",
    "updated_at": "2026-09-21T00:00:00Z"
  }
}
Additional Context

ThreatSpec is not another one-shot threat-report command. It maintains a machine-readable threat model with typed cross-references across the whole lifecycle, so a threat can be traced to a mitigation, a requirement, a task, a test, and a recorded verdict. Structural work (schema, references, coverage, drift, severity) runs deterministically in scripts; the agent is used only for judgment.

The repository also ships two optional companions that install through their own primitives: a threatspec-sdd preset that appends SR-### awareness to the core tasks, analyze, converge, and checklist commands, and a secure-sdd workflow with review gates.

examples/rag-assistant/ contains a complete first-pass output generated by the model command from a bare spec, including the rendered threat model, check report, and coverage table, kept valid by the test suite.

The extension's own threat model is published at docs/threat-model.md, including the residual risks (indirect prompt injection via artifact content, and the opt-in verification.test_command).

主要语言
Python
星标
138k
派生
12.4k
平均合并
3 天 6 小时
30 天内合并 PR
145

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/spec-kit 的其他 Issue

查看 github/spec-kit 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。