spec-init
npx skills add https://github.com/zixun-github/aisdlc --skill spec-init
Agent 安装分布
Skill 文档
spec-init
æ¦è§
spec-init ç¨äºå¨æ¬ä»åºéå建ä¸ä¸ªæ°çéæ±çº§ Spec Packï¼èªå¨éå¢ä¸ä½ç¼å·ãåå»ºå¹¶åæ¢å° {num}-{short-name} 忝ãçæ .aisdlc/specs/{num}-{short-name}/ ç®å½ç»æï¼å¹¶æåå§éæ±åå
¥ requirements/raw.mdï¼UTF-8 with BOMï¼ã
å¼å§æ¶å®£å¸ï¼ãææ£å¨ä½¿ç¨ spec-init æè½åå§åæ°ç Spec Packï¼åå»ºåæ¯ä¸ requirements/raw.mdï¼ãã
使¶ä½¿ç¨ / ä¸ä½¿ç¨
- ä½¿ç¨æ¶æº
- ç¨æ·è¦å¼å§ä¸ä¸ªâæ°éæ±âç Specï¼è¿æ²¡æ
{num}-{short-name}忝ä¸.aisdlc/specs/...ç®å½ï¼ã - ç¨æ·åªç»äºä¸æéæ±ææ¬ï¼ä¸æ¹ä¾¿å æå¨å»ºæä»¶ï¼ï¼æ å¿åæ°ç¼ç 导è´ä¹±ç ã
- éè¦ç¡®ä¿åæ¯å½åãç¼å·æ¥æºãç®å½ç»æä¸åç»å½ä»¤ï¼å¦
spec-product-clarifyï¼ä¸è´ã
- ç¨æ·è¦å¼å§ä¸ä¸ªâæ°éæ±âç Specï¼è¿æ²¡æ
- ä¸è¦ç¨å¨
- å·²ç»å¨ä¸ä¸ªåæ³ç
{num}-{short-name}spec 忝ä¸ï¼ä¸.aisdlc/specs/{num}-{short-name}/å·²åå¨å¹¶ç»æå®æ´ï¼è¿æ¶ç´æ¥è¿å ¥åç»å½ä»¤ï¼ã
- å·²ç»å¨ä¸ä¸ªåæ³ç
å¿«éåè
- 忝å½åï¼
{num}-{short-name}ï¼num为ä¸ä½æ°åï¼short-name为 kebab-caseï¼å°å忝/æ°å/è¿åç¬¦ï¼ - ç»ä¸è¾åºä½ç½®ï¼
.aisdlc/specs/{num}-{short-name}/ - å¿
å¤åç®å½ï¼
requirements/ãdesign/ãimplementation/ãverification/ãrelease/ - åå§æä»¶ï¼
requirements/raw.mdï¼å 容=åå§éæ±ï¼ç¼ç =UTF-8 with BOMï¼ - èæ¬ä½ç½®ï¼
<æ¬SKILL.mdç®å½>/scripts/ - èæ¬å
¥å£ï¼PowerShellï¼ï¼
spec-create-branch.ps1çMainï¼é PowerShell 7+ï¼ - èæ¬å
¥å£ï¼Bashï¼ï¼
spec-create-branch.shï¼å½ä»¤è¡åæ°è§--helpï¼ - èªå¨éæ©è§åï¼å¨ Windows/PowerShell ç¯å¢ä¼å ä½¿ç¨ PowerShellï¼å¨ macOS/Linux ç bash ç¯å¢ä½¿ç¨ Bash çæ¬ï¼ä¸¤è è¡ä¸ºå¯¹é½ï¼å·®å«ä» å¨è°ç¨æ¹å¼ä¸è¿åå¼å½¢æï¼ã
- èæ¬åæ°ï¼PowerShellï¼
-ShortNameï¼å¿ éï¼-SourceFilePathï¼å¿ éï¼å¿ é¡»æ¯æä»¶è·¯å¾ï¼-Titleï¼å¯éï¼
- åæ°æ·è´çº¢æï¼ä¸è¦ç´æ¥å¤å¶ä¸æ
Main ... -SourceFilePath $sourceFilePathå°±è¿è¡ï¼$sourceFilePathå¿ é¡»å æâæ¥éª¤ 1âå夿已åå¨çæä»¶è·¯å¾ã - èæ¬åæ°ï¼Bashï¼
--short-nameï¼å¿ éï¼--source-fileï¼å¿ éï¼å¿ é¡»æ¯æä»¶è·¯å¾ï¼--titleï¼å¯éï¼
- å
³é®å¯ä½ç¨ï¼èæ¬æ§è¡æååä¼å é¤ä¼ å
¥çæºæä»¶ï¼PowerShellï¼
SourceFilePathï¼Bashï¼--source-fileï¼æ 论æ¯åå§æä»¶è¿æ¯ä¸´æ¶æä»¶ï¼ã
宿½æ¥éª¤ï¼Agent è¡ä¸ºè§èï¼
0) 颿£ï¼ä¸è¦è·³è¿ï¼
- 确认å½åå·¥ä½ç®å½å¨ç®æ Git ä»åºå
ï¼å¨ä»åºä»»æåç®å½é½å¯ä»¥ï¼åªè¦
git rev-parse --show-toplevelè½æåï¼ã - PowerShell è·¯å¾ï¼ç¡®è®¤ PowerShell çæ¬æ»¡è¶³èæ¬è¦æ±ï¼èæ¬å£°æ
#Requires -Version 7.0ï¼ã - Bash è·¯å¾ï¼ç¡®è®¤
bashå¯ç¨ï¼ä¸ægitãheadãtailãmktempï¼èæ¬ç¨äº BOM å¤çä¸ä¸´æ¶æä»¶ï¼ã - å¦æç¨æ·æä¾çæ¯âæä»¶è·¯å¾âï¼æéï¼è¯¥æä»¶ä¼è¢«èæ¬å é¤ï¼å¦éä¿çï¼å å¤å¶ä¸ä»½åä¼ å ¥ã
1) è§£æç¨æ·è¾å ¥ â ä¸å¾è½å°æä»¶è·¯å¾
强å¶è§åï¼å§ç»ä»¥æä»¶è·¯å¾æ¹å¼ä¼ å ¥éæ±å 容ï¼é¿å 䏿å 容å¨åæ°ä¼ é/ç¼ç ä¸åºé®é¢ï¼ã
- è¾å
¥æ¯æä»¶è·¯å¾ï¼ç´æ¥ç¨è¯¥è·¯å¾ä½ä¸º
$sourceFilePathï¼ä½è¦æç¤ºâä¼è¢«å é¤âï¼ã - è¾å
¥æ¯ææ¬ï¼åå»ºä¸´æ¶æä»¶å¹¶ç¨ UTF-8 with BOM åå
¥ï¼ç¶åæä¸´æ¶æä»¶è·¯å¾ä½ä¸º
$sourceFilePathã
PowerShell 模æ¿ï¼ææ¬ â BOM ä¸´æ¶æä»¶ï¼ï¼
$raw = @"
ä¸ºç°æåå°ç³»ç»æ°å¢âæ¹é导åºè®¢åâåè½ï¼æ¯æææ¶é´èå´/ç¶æçéãCSV ä¸ XLSX ä¸¤ç§æ ¼å¼ã导åºä»»å¡å¼æ¥æ§è¡å¹¶å¨å¯¼åºä¸å¿å¯ä¸è½½ï¼æéä»
管çåå¯è§ã
"@
$utf8Bom = [System.Text.UTF8Encoding]::new($true)
$tmp = Join-Path ([System.IO.Path]::GetTempPath()) ("sdlc-raw-{0}.md" -f ([guid]::NewGuid().ToString("N")))
[System.IO.File]::WriteAllText($tmp, $raw, $utf8Bom)
$sourceFilePath = $tmp
Bash 模æ¿ï¼ææ¬ â BOM ä¸´æ¶æä»¶ï¼ï¼
raw_file="$(mktemp)"
{
printf '\xEF\xBB\xBF'
cat <<'EOF'
ä¸ºç°æåå°ç³»ç»æ°å¢âæ¹é导åºè®¢åâåè½ï¼æ¯æææ¶é´èå´/ç¶æçéãCSV ä¸ XLSX ä¸¤ç§æ ¼å¼ã导åºä»»å¡å¼æ¥æ§è¡å¹¶å¨å¯¼åºä¸å¿å¯ä¸è½½ï¼æéä»
管çåå¯è§ã
EOF
} >"$raw_file"
source_file_path="$raw_file"
2) çæ short-nameï¼2-4 è¯ï¼kebab-caseï¼
ä»åå§éæ±æç¼ 2-4 个è¯ççåç§°ï¼ä¼å
âå¨è¯-åè¯âï¼ä¿çå¸¸è§ææ¯ç¼©åï¼å¦ oauth2ãjwtãapiï¼ï¼
- 示ä¾ï¼æ¹é导åºè®¢å + 弿¥ä»»å¡ â
export-orders-batchæadd-order-export - è¥ä¸ç¡®å®ï¼å®å¯æ´éç¨ãæ´çï¼
export-orders
3) è°ç¨èæ¬åå»ºåæ¯ä¸ Spec Pack
ææä½ç³»ç»èªå¨éæ©èæ¬å®ç°ï¼ä¸è¦ç¡¬è·âå¦ä¸ç§âï¼ã
- Windows / PowerShellï¼ç¨ dot sourcing å è½½
spec-create-branch.ps1å¹¶è°ç¨Main - macOS/Linux / Bashï¼ç´æ¥æ§è¡
spec-create-branch.shï¼è¾åº JSONï¼
æ§è¡åæ°ï¼åªå¡«åæ°å³å¯ï¼
- PowerShellï¼
Mainï¼ï¼-ShortName <kebab-case>-SourceFilePath <éæ±æä»¶è·¯å¾>-Title <å¯é>- è°ç¨å½¢æï¼
Main -ShortName <...> -SourceFilePath <...> [-Title <...>]
- Bashï¼
spec-create-branch.shï¼ï¼--short-name <kebab-case>--source-file <éæ±æä»¶è·¯å¾>--title <å¯é>- è°ç¨å½¢æï¼
spec-create-branch.sh --short-name <...> --source-file <...> [--title <...>]
4) éªæ¶ï¼DoDï¼
æ£æ¥ä»¥ä¸äºå®æ¯å¦åæ¶æç«ï¼ç¼ºä¸ä¸å¯ï¼ï¼
- å½å忝åï¼
git branch --show-currentï¼ç¬¦å{num}-{short-name}ã .aisdlc/specs/<branchName>/åå¨ï¼ä¸å å« 5 ä¸ªå¿ éåç®å½ï¼requirements/ãdesign/ãimplementation/ãverification/ãrelease/ï¼ã.aisdlc/specs/<branchName>/requirements/raw.mdåå¨ï¼å 容çäºåå§éæ±ï¼æ³¨ææä»¶å¤´æ UTF-8 BOMï¼ã- ä¼ å ¥çæºæä»¶å·²è¢«å é¤ï¼è¿ä¸æ¯ bugï¼è¥ç¨æ·éè¦ä¿çï¼åºå¨æ¥éª¤ 1 ä¹åèªè¡å¤ä»½ï¼ã
5) 宿åï¼ç´æ¥è¿å
¥ R1ï¼spec-product-clarifyï¼ï¼æ é using-aisdlc
spec-init ç DoD éè¿åï¼é»è®¤ç´æ¥ä¸²èè¿å
¥éæ±æ¾æ¸
R1ï¼
- ä¸ä¸æ¥ï¼åºå®ï¼ï¼å
æ§è¡
spec-contextå¹¶åæ¾FEATURE_DIR=... - ç¶åè¿å
¥ï¼
spec-product-clarifyï¼åºäºrequirements/raw.md产åºrequirements/solution.mdï¼å«#impact-analysisï¼
说æï¼æ¬æè½åªåâè¿å ¥ R1âçåºå®è¡æ¥ï¼ä¸å D0/D1/D2/I1/I2 çåç»è·¯å¾éæ©ï¼åç»å¦éåæµï¼ååå°
using-aisdlcã
宿åè¾åºï¼ä¾èªå¨æ¨è¿è¯»åï¼
å¨åçæ«å°¾è¿½å 以ä¸ä¸¤æ®µï¼ä¸è¦çç¥ï¼ï¼
- ãæ¬é¶æ®µäº§ç©å·²è½çãä¸ä¸æ¥å°ç´æ¥è¿å
¥
spec-context â spec-product-clarifyï¼æ éusing-aisdlcï¼ãã ROUTER_SUMMARYï¼
ROUTER_SUMMARY:
stage: R0
artifacts:
- ".aisdlc/specs/{num}-{short-name}/requirements/raw.md"
needs_human_review: false
blocked: false
block_reason: ""
notes: "DoD éè¿ååºå®è¿å
¥ R1ï¼spec-context â spec-product-clarify"
常è§é误ï¼ä»¥åæä¹é¿å ï¼
- èªå忝/ç®å½ç»æï¼ä¸è¦ç¨
spec/<slug>ãfeature/<slug>ãfeatures/<slug>ï¼æ¬ä»åºè§èæ¯{num}-{short-name}+.aisdlc/specs/...ã - æä¸æéæ±å½ä½å½ä»¤è¡åæ°ç´æ¥ä¼ éï¼ä¸å¾åå ¥ UTF-8 BOM æä»¶ï¼åä¼ è·¯å¾ã
- è¯¯ä»¥ä¸ºèæ¬ä¸ä¼å æºæä»¶ï¼å®ä¼å é¤
SourceFilePathæåçæä»¶ï¼å¯¹ç¨æ·çåå§æä»¶å¡å¿ å 确认æ¯å¦éè¦å¤ä»½ã - çåç§°ä¸è§èï¼é¿å
大åãä¸å线ã䏿ï¼é¿å
ååè¿å符ä¸è¿ç»
--ï¼å°½é 2-4 è¯ã