
Speckit Implement Zh
- 274 installs
- 9 repo stars
- Updated November 28, 2025
- forztf/open-skilled-sdd
Execute Spec Kit implementation plans in Chinese, breaking specs into milestones, tracking dependencies, and coordinating agent-driven coding from structured specification kits.
About
Chinese Spec Kit implementation skill that transforms structured specification kits into milestones, dependency-aware task plans, and agent-coordinated coding workflows for spec-driven software delivery.
- Spec Kit workflow
- Chinese locale
- Milestone planning
- Dependency tracking
- Agent coordination
Speckit Implement Zh by the numbers
- 274 all-time installs (skills.sh)
- Ranked #933 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Jul 24, 2026 (Skillselion catalog sync)
npx skills add https://github.com/forztf/open-skilled-sdd --skill speckit-implement-zhAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 274 |
|---|---|
| repo stars | ★ 9 |
| Last updated | November 28, 2025 |
| Repository | forztf/open-skilled-sdd ↗ |
What it does
Execute Spec Kit implementation plans in Chinese, breaking specs into milestones, tracking dependencies, and coordinating agent-driven coding from structured specification kits.
Files
用户输入
$ARGUMENTS您必须在继续之前考虑用户输入(如果不为空)。
大纲
scripts: sh: .specify/scripts/bash/check-prerequisites.sh --json ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json
1. 从仓库根目录运行 {SCRIPT} 并解析 FEATURE_DIR 和 AVAILABLE_DOCS 列表。所有路径必须是绝对的。对于参数中的单引号,如 "I'm Groot",使用转义语法:例如 'I'\''m Groot'(或者如果可能的话使用双引号:"I'm Groot")。
2. 检查检查表状态(如果 FEATURE_DIR/checklists/ 存在):
- 扫描 checklists/ 目录中的所有检查表文件
- 对于每个检查表,计数:
- 总项目:所有匹配
- [ ]或- [X]或- [x]的行 - 完成项目:匹配
- [X]或- [x]的行 - 未完成项目:匹配
- [ ]的行
- 创建状态表:
| 检查表 | 总计 | 已完成 | 未完成 | 状态 |
|-----------|-------|-----------|------------|--------|
| ux.md | 12 | 12 | 0 | ✓ 通过 |
| test.md | 8 | 5 | 3 | ✗ 失败 |
| security.md | 6 | 6 | 0 | ✓ 通过 |- 计算总体状态:
- 通过:所有检查表都有 0 个未完成项目
- 失败:一个或多个检查表有未完成项目
- 如果有任何检查表未完成:
- 显示包含未完成项目计数的表格
- 停止并询问:"一些检查表未完成。您是否仍要继续执行实现?(yes/no)"
- 等待用户响应后再继续
- 如果用户说"no"或"wait"或"stop",则停止执行
- 如果用户说"yes"或"proceed"或"continue",则继续到步骤 3
- 如果所有检查表都完成:
- 显示表格显示所有检查表已通过
- 自动继续到步骤 3
3. 加载和分析实现上下文:
- 必需:读取 tasks.md 以获取完整的任务列表和执行计划
- 必需:读取 plan.md 以获取技术栈、架构和文件结构
- 如果存在:读取 data-model.md 以获取实体和关系
- 如果存在:读取 contracts/ 以获取 API 规范和测试要求
- 如果存在:读取 research.md 以获取技术决策和约束
- 如果存在:读取 quickstart.md 以获取集成场景
4. 项目设置验证:
- 必需:根据实际项目设置创建/验证忽略文件:
检测和创建逻辑:
- 检查以下命令是否成功以确定仓库是否为 git 仓库(如果是则创建/验证 .gitignore):
git rev-parse --git-dir 2>/dev/null- 检查是否存在 Dockerfile* 或 Docker 在 plan.md 中 → 创建/验证 .dockerignore
- 检查是否存在 .eslintrc 或 eslint.config. → 创建/验证 .eslintignore
- 检查是否存在 .prettierrc* → 创建/验证 .prettierignore
- 检查是否存在 .npmrc 或 package.json → 创建/验证 .npmignore(如果发布)
- 检查是否存在 terraform 文件 (*.tf) → 创建/验证 .terraformignore
- 检查是否需要 .helmignore(存在 helm 图表)→ 创建/验证 .helmignore
如果忽略文件已存在:验证它包含基本模式,仅追加缺失的关键模式 如果忽略文件缺失:创建包含检测技术的完整模式集
按技术的常见模式(来自 plan.md 技术栈):
- Node.js/JavaScript/TypeScript:
node_modules/,dist/,build/,*.log,.env* - Python:
__pycache__/,*.pyc,.venv/,venv/,dist/,*.egg-info/ - Java:
target/,*.class,*.jar,.gradle/,build/ - C#/.NET:
bin/,obj/,*.user,*.suo,packages/ - Go:
*.exe,*.test,vendor/,*.out - Ruby:
.bundle/,log/,tmp/,*.gem,vendor/bundle/ - PHP:
vendor/,*.log,*.cache,*.env - Rust:
target/,debug/,release/,*.rs.bk,*.rlib,*.prof*,.idea/,*.log,.env* - Kotlin:
build/,out/,.gradle/,.idea/,*.class,*.jar,*.iml,*.log,.env* - C++:
build/,bin/,obj/,out/,*.o,*.so,*.a,*.exe,*.dll,.idea/,*.log,.env* - C:
build/,bin/,obj/,out/,*.o,*.a,*.so,*.exe,Makefile,config.log,.idea/,*.log,.env* - Swift:
.build/,DerivedData/,*.swiftpm/,Packages/ - R:
.Rproj.user/,.Rhistory,.RData,.Ruserdata,*.Rproj,packrat/,renv/ - 通用:
.DS_Store,Thumbs.db,*.tmp,*.swp,.vscode/,.idea/
工具特定模式:
- Docker:
node_modules/,.git/,Dockerfile*,.dockerignore,*.log*,.env*,coverage/ - ESLint:
node_modules/,dist/,build/,coverage/,*.min.js - Prettier:
node_modules/,dist/,build/,coverage/,package-lock.json,yarn.lock,pnpm-lock.yaml - Terraform:
.terraform/,*.tfstate*,*.tfvars,.terraform.lock.hcl - Kubernetes/k8s:
*.secret.yaml,secrets/,.kube/,kubeconfig*,*.key,*.crt
5. 解析 tasks.md 结构并提取:
- 任务阶段:设置、测试、核心、集成、完善
- 任务依赖:顺序与并行执行规则
- 任务详情:ID、描述、文件路径、并行标记 [P]
- 执行流程:顺序和依赖要求
6. 按照任务计划执行实现:
- 阶段执行:完成每个阶段后再进入下一个
- 尊重依赖:按顺序运行顺序任务,并行任务 [P] 可以一起运行
- 遵循 TDD 方法:在相应的实现任务之前执行测试任务
- 基于文件的协调:影响相同文件的任务必须顺序运行
- 验证检查点:在继续之前验证每个阶段的完成情况
7. 实现执行规则:
- 首先设置:初始化项目结构、依赖、配置
- 测试优先于代码:如果需要为契约、实体和集成场景编写测试
- 核心开发:实现模型、服务、CLI 命令、端点
- 集成工作:数据库连接、中间件、日志、外部服务
- 完善和验证:单元测试、性能优化、文档
8. 进度跟踪和错误处理:
- 在每个完成的任务后报告进度
- 如果任何非并行任务失败则停止执行
- 对于并行任务 [P],继续执行成功的任务,报告失败的任务
- 提供清晰的错误消息和调试上下文
- 如果实现无法继续则建议下一步
- 重要 对于完成的任务,确保在任务文件中标记为 [X]。
9. 完成验证:
- 验证所有必需任务已完成
- 检查实现的功能是否与原始规格匹配
- 验证测试通过且覆盖率符合要求
- 确认实现遵循技术计划
- 报告最终状态和已完成工作的摘要
注意:此命令假设 tasks.md 中存在完整的任务分解。如果任务不完整或缺失,建议首先运行 speckit-tasks 以重新生成任务列表。
# Docker ignore template
# Generated by speckit-implement skill
# Git
.git
.gitignore
# Documentation
README.md
docs/
*.md
# Dependency directories
node_modules/
vendor/
__pycache__/
.pytest_cache/
.venv/
venv/
# IDE and editor files
.vscode/
.idea/
*.swp
*.swo
# OS generated files
.DS_Store
Thumbs.db
# Logs
*.log
logs/
# Environment variables
.env
.env.local
.env.*.local
# Testing
coverage/
.nyc_output/
.coverage
# Build artifacts (keep source, ignore built)
dist/
build/
target/
bin/
obj/
# Cache directories
.cache/
.parcel-cache/
.eslintcache
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Temporary files
*.tmp
*.temp# ESLint ignore template
# Generated by speckit-implement skill
# Dependencies
node_modules/
# Production builds
dist/
build/
out/
# Coverage directory used by tools like istanbul
coverage/
*.lcov
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
.env.production
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
# Gatsby files
.cache/
public
# Storybook build outputs
.out
.storybook-out
# Temporary folders
tmp/
temp/
# Logs
*.log
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?# Git ignore template
# Generated by speckit-implement skill
# IDE and editor files
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
Thumbs.db
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Logs
*.log
logs/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
*.lcov
.nyc_output
# Dependency directories
node_modules/
.npm
.eslintcache
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
public
# Vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port上下文加载顺序和优先级
必需文档 (最高优先级)
1. tasks.md - 完整的任务列表和执行计划
- 包含所有实施步骤
- 定义依赖关系和执行顺序
- 指定阶段划分
2. plan.md - 技术栈、架构和文件结构
- 技术选型和架构决策
- 项目结构和组织方式
- 开发规范和标准
条件文档 (如果存在)
数据模型 (如果存在)
3. data-model.md - 实体和关系
- 数据库模式设计
- 实体关系图
- 数据验证规则
API 规范 (如果存在)
4. contracts/ - API 规范和测试要求
- 端点定义
- 请求/响应模式
- 验证和错误处理
研究文档 (如果存在)
5. research.md - 技术决策和约束
- 技术调研结果
- 性能要求
- 安全考虑
快速开始 (如果存在)
6. quickstart.md - 集成场景
- 使用示例
- 部署配置
- 环境要求
加载策略
错误处理
- 如果必需文档缺失,立即停止并提示
- 如果条件文档缺失,记录但继续执行
优先级原则
1. 先加载任务计划,了解实施步骤 2. 再加载技术规划,理解架构约束 3. 最后加载补充信息,完善实施细节
依赖分析
- 分析文档间的依赖关系
- 识别可能的冲突或矛盾
- 提供解决建议
文档完整性检查
必需验证
- [ ] tasks.md 存在且格式正确
- [ ] plan.md 存在且内容完整
- [ ] 文档间信息一致
- [ ] 依赖关系明确可选验证
- [ ] data-model.md 与 tasks.md 一致
- [ ] contracts/ 与 plan.md 架构匹配
- [ ] research.md 决策已实施
- [ ] quickstart.md 场景可执行Ignore 文件模式参考
通用模式
.DS_Store
Thumbs.db
*.tmp
*.swp
.vscode/
.idea/技术栈特定模式
Node.js/JavaScript/TypeScript
node_modules/
dist/
build/
*.log
.env*Python
__pycache__/
*.pyc
.venv/
venv/
dist/
*.egg-info/Java
target/
*.class
*.jar
.gradle/
build/C#/.NET
bin/
obj/
*.user
*.suo
packages/Go
*.exe
*.test
vendor/
*.outRuby
.bundle/
log/
tmp/
*.gem
vendor/bundle/PHP
vendor/
*.log
*.cache
*.envRust
target/
debug/
release/
*.rs.bk
*.rlib
*.prof*
.idea/
*.log
.env*Kotlin
build/
out/
.gradle/
.idea/
*.class
*.jar
*.iml
*.log
.env*C++
build/
bin/
obj/
out/
*.o
*.so
*.a
*.exe
*.dll
.idea/
*.log
.env*C
build/
bin/
obj/
out/
*.o
*.a
*.so
*.exe
Makefile
config.log
.idea/
*.log
.env*Swift
.build/
DerivedData/
*.swiftpm/
Packages/R
.Rproj.user/
.Rhistory
.RData
.Ruserdata
*.Rproj
packrat/
renv/工具特定模式
Docker
node_modules/
.git/
Dockerfile*
.dockerignore
*.log*
.env*
coverage/ESLint
node_modules/
dist/
build/
coverage/
*.min.jsPrettier
node_modules/
dist/
build/
coverage/
package-lock.json
yarn.lock
pnpm-lock.yamlTerraform
.terraform/
*.tfstate*
*.tfvars
.terraform.lock.hclKubernetes/k8s
*.secret.yaml
secrets/
.kube/
kubeconfig*
*.key
*.crt实施工作流参考
任务阶段
实施通常分为以下几个阶段:
1. Setup - 项目初始化和配置 2. Tests - 测试设置和测试用例编写 3. Core - 核心功能实现 4. Integration - 集成和中间件 5. Polish - 优化和完善
任务执行规则
依赖关系处理
- 顺序任务: 必须按定义顺序执行
- 并行任务 [P]: 可以同时执行,但不影响相同文件的任务必须保持顺序
TDD 方法
- 测试任务优先于对应的实现任务
- 先写测试,再写实现代码
文件协调
- 影响相同文件的任务必须按顺序执行
- 避免并发修改冲突
验证检查点
- 每个阶段完成后进行验证
- 确保质量标准满足要求
错误处理
非并行任务失败
- 立即停止执行
- 提供详细错误信息
- 建议修复步骤
并行任务失败
- 继续执行成功的任务
- 记录失败的任务
- 汇总所有错误信息
进度跟踪
任务标记
- 使用
[X]标记已完成的任务 - 保持任务文件同步更新
状态报告
- 每个任务完成后报告进度
- 提供清晰的状态概览
- 包含下一步建议
完成验证
必需检查
- [ ] 所有必需任务已完成
- [ ] 实现功能与原始规范匹配
- [ ] 测试通过且覆盖率达到要求
- [ ] 实现遵循技术计划
最终报告
- 提供完成工作的详细摘要
- 列出所有实现的功能
- 说明任何偏离或调整
- 提供维护和扩展建议
# 检查清单状态分析脚本
param(
[Parameter(Mandatory=$true)]
[string]$ChecklistsDir
)
function Get-ChecklistStatus {
param(
[string]$Path
)
if (-not (Test-Path $Path)) {
return @{
Name = Split-Path $Path -Leaf
Total = 0
Completed = 0
Incomplete = 0
Status = "NOT_FOUND"
}
}
$content = Get-Content $Path -Raw
$lines = $content -split "`n"
$total = 0
$completed = 0
$incomplete = 0
foreach ($line in $lines) {
if ($line -match '^- \[([ Xx])\]') {
$total++
if ($matches[1] -eq 'X' -or $matches[1] -eq 'x') {
$completed++
} else {
$incomplete++
}
}
}
$status = if ($incomplete -eq 0) { "PASS" } else { "FAIL" }
return @{
Name = Split-Path $Path -Leaf
Total = $total
Completed = $completed
Incomplete = $incomplete
Status = $status
}
}
# 主逻辑
if (-not (Test-Path $ChecklistsDir)) {
Write-Host "No checklists directory found."
exit 0
}
$checklists = Get-ChildItem $ChecklistsDir -Filter "*.md"
$results = @()
foreach ($checklist in $checklists) {
$status = Get-ChecklistStatus -Path $checklist.FullName
$results += $status
}
# 生成状态表
Write-Host "| Checklist | Total | Completed | Incomplete | Status |"
Write-Host "|-----------|-------|-----------|------------|--------|"
foreach ($result in $results) {
$statusSymbol = if ($result.Status -eq "PASS") { "✓ PASS" } else { "✗ FAIL" }
Write-Host "| $($result.Name) | $($result.Total) | $($result.Completed) | $($result.Incomplete) | $statusSymbol |"
}
# 计算总体状态
$overallStatus = if ($results.Where({$_.Status -eq "FAIL"}).Count -eq 0) { "PASS" } else { "FAIL" }
Write-Host "`nOverall Status: $overallStatus"
if ($overallStatus -eq "FAIL") {
Write-Host "`nSome checklists are incomplete. Do you want to proceed with implementation anyway? (yes/no)"
}
# 输出 JSON 格式(如果需要)
$results | ConvertTo-Json -Depth 10# Speckit 实施前置条件检查脚本
param(
[switch]$Json,
[switch]$RequireTasks,
[switch]$IncludeTasks
)
# 检查是否在 Git 仓库中
$gitRepo = git rev-parse --git-dir 2>$null
$IsGitRepo = $LASTEXITCODE -eq 0
# 检查 FEATURE_DIR
$FEATURE_DIR = $env:FEATURE_DIR
if (-not $FEATURE_DIR) {
$FEATURE_DIR = "."
}
# 检查可用文档
$AVAILABLE_DOCS = @()
if (Test-Path "tasks.md") { $AVAILABLE_DOCS += "tasks.md" }
if (Test-Path "plan.md") { $AVAILABLE_DOCS += "plan.md" }
if (Test-Path "data-model.md") { $AVAILABLE_DOCS += "data-model.md" }
if (Test-Path "research.md") { $AVAILABLE_DOCS += "research.md" }
if (Test-Path "quickstart.md") { $AVAILABLE_DOCS += "quickstart.md" }
if (Test-Path "contracts") {
$contracts = Get-ChildItem "contracts" -Filter "*.md"
foreach ($contract in $contracts) {
$AVAILABLE_DOCS += "contracts/$($contract.Name)"
}
}
# 输出结果
if ($Json) {
$result = @{
FEATURE_DIR = $FEATURE_DIR
IS_GIT_REPO = $IsGitRepo
AVAILABLE_DOCS = $AVAILABLE_DOCS
}
if ($IncludeTasks -and (Test-Path "tasks.md")) {
$result.TASKS = Get-Content "tasks.md" -Raw
}
$result | ConvertTo-Json -Depth 10
} else {
Write-Host "FEATURE_DIR: $FEATURE_DIR"
Write-Host "Git Repository: $IsGitRepo"
Write-Host "Available Documents:"
$AVAILABLE_DOCS | ForEach-Object { Write-Host " - $_" }
if ($RequireTasks -and -not (Test-Path "tasks.md")) {
Write-Host "ERROR: tasks.md is required but not found!" -ForegroundColor Red
exit 1
}
}# 项目设置检测脚本
function Test-IsGitRepo {
$result = git rev-parse --git-dir 2>$null
return $LASTEXITCODE -eq 0
}
function Test-DockerExists {
return (Test-Path "Dockerfile*") -or (Test-Path "*.dockerfile")
}
function Test-EslintExists {
return (Test-Path ".eslintrc*") -or (Test-Path "eslint.config.*")
}
function Test-PrettierExists {
return (Test-Path ".prettierrc*")
}
function Test-NpmExists {
return (Test-Path ".npmrc") -or (Test-Path "package.json")
}
function Test-TerraformExists {
return (Test-Path "*.tf")
}
function Test-HelmExists {
return (Test-Path "Chart.yaml") -or (Test-Path "charts/**")
}
function Get-TechStackFromPlan {
if (-not (Test-Path "plan.md")) {
return @()
}
$planContent = Get-Content "plan.md" -Raw
$techStack = @()
if ($planContent -match "node|javascript|typescript|npm|yarn") {
$techStack += "Node.js"
}
if ($planContent -match "python|pip|conda|virtualenv") {
$techStack += "Python"
}
if ($planContent -match "java|maven|gradle") {
$techStack += "Java"
}
if ($planContent -match "c#|\.net|dotnet") {
$techStack += "C#"
}
if ($planContent -match "golang|go") {
$techStack += "Go"
}
if ($planContent -match "ruby|rails|bundler") {
$techStack += "Ruby"
}
if ($planContent -match "php|composer") {
$techStack += "PHP"
}
if ($planContent -match "rust|cargo") {
$techStack += "Rust"
}
if ($planContent -match "kotlin") {
$techStack += "Kotlin"
}
if ($planContent -match "c\+\+") {
$techStack += "C++"
}
if ($planContent -match "c[^+]|gcc|clang") {
$techStack += "C"
}
if ($planContent -match "swift") {
$techStack += "Swift"
}
if ($planContent -match "r|cran") {
$techStack += "R"
}
return $techStack
}
# 主检测逻辑
$projectSetup = @{
IsGitRepo = Test-IsGitRepo
HasDocker = Test-DockerExists
HasEslint = Test-EslintExists
HasPrettier = Test-PrettierExists
HasNpm = Test-NpmExists
HasTerraform = Test-TerraformExists
HasHelm = Test-HelmExists
TechStack = Get-TechStackFromPlan
}
# 输出 JSON 结果
$projectSetup | ConvertTo-Json -Depth 10