sdd-tool 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +288 -2
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -434,6 +434,269 @@ sdd validate --strict # \uACBD\uACE0\uB3C4 \uC5D0\uB7EC\uB85C \uCC98\uB9AC
|
|
|
434
434
|
`;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
|
+
// src/generators/claude-commands.ts
|
|
438
|
+
function generateClaudeCommands() {
|
|
439
|
+
return [
|
|
440
|
+
{
|
|
441
|
+
name: "sdd-new",
|
|
442
|
+
content: `\uC0C8\uB85C\uC6B4 \uAE30\uB2A5 \uBA85\uC138\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
|
|
443
|
+
|
|
444
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
445
|
+
|
|
446
|
+
1. \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uAE30\uB2A5\uBA85\uACFC \uAC04\uB2E8\uD55C \uC124\uBA85\uC744 \uC694\uCCAD\uD558\uC138\uC694
|
|
447
|
+
2. \`sdd new <feature-id> --all\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC5EC \uAE30\uBCF8 \uAD6C\uC870\uB97C \uC0DD\uC131\uD558\uC138\uC694
|
|
448
|
+
3. \uC0DD\uC131\uB41C \`.sdd/specs/<feature-id>/spec.md\` \uD30C\uC77C\uC744 \uC5F4\uC5B4 \uB0B4\uC6A9\uC744 \uC791\uC131\uD558\uC138\uC694
|
|
449
|
+
|
|
450
|
+
## \uBA85\uC138 \uC791\uC131 \uADDC\uCE59
|
|
451
|
+
|
|
452
|
+
- RFC 2119 \uD0A4\uC6CC\uB4DC \uC0AC\uC6A9: SHALL, MUST, SHOULD, MAY, SHALL NOT
|
|
453
|
+
- GIVEN-WHEN-THEN \uD615\uC2DD\uC758 \uC2DC\uB098\uB9AC\uC624 \uD3EC\uD568 \uD544\uC218
|
|
454
|
+
- \uAC01 \uC694\uAD6C\uC0AC\uD56D\uC5D0 \uACE0\uC720 ID \uBD80\uC5EC (REQ-001, REQ-002, ...)
|
|
455
|
+
|
|
456
|
+
## \uC608\uC2DC
|
|
457
|
+
|
|
458
|
+
\`\`\`markdown
|
|
459
|
+
### REQ-01: \uC0AC\uC6A9\uC790 \uC778\uC99D
|
|
460
|
+
|
|
461
|
+
\uC2DC\uC2A4\uD15C\uC740 \uC774\uBA54\uC77C\uACFC \uBE44\uBC00\uBC88\uD638\uB85C \uC0AC\uC6A9\uC790\uB97C \uC778\uC99D\uD574\uC57C \uD55C\uB2E4(SHALL).
|
|
462
|
+
|
|
463
|
+
### Scenario: \uC62C\uBC14\uB978 \uC790\uACA9 \uC99D\uBA85\uC73C\uB85C \uB85C\uADF8\uC778
|
|
464
|
+
|
|
465
|
+
- **GIVEN** \uB4F1\uB85D\uB41C \uC0AC\uC6A9\uC790\uAC00 \uC874\uC7AC\uD560 \uB54C
|
|
466
|
+
- **WHEN** \uC62C\uBC14\uB978 \uC774\uBA54\uC77C\uACFC \uBE44\uBC00\uBC88\uD638\uB85C \uB85C\uADF8\uC778\uC744 \uC2DC\uB3C4\uD558\uBA74
|
|
467
|
+
- **THEN** \uC561\uC138\uC2A4 \uD1A0\uD070\uC774 \uBC1C\uAE09\uB418\uC5B4\uC57C \uD55C\uB2E4
|
|
468
|
+
\`\`\`
|
|
469
|
+
|
|
470
|
+
\uC644\uB8CC \uD6C4 \`sdd validate\`\uB85C \uBA85\uC138\uB97C \uAC80\uC99D\uD558\uC138\uC694.
|
|
471
|
+
`
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
name: "sdd-plan",
|
|
475
|
+
content: `\uAE30\uB2A5 \uBA85\uC138\uC5D0 \uB300\uD55C \uAD6C\uD604 \uACC4\uD68D\uC744 \uC791\uC131\uD569\uB2C8\uB2E4.
|
|
476
|
+
|
|
477
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
478
|
+
|
|
479
|
+
1. \`.sdd/specs/\` \uB514\uB809\uD1A0\uB9AC\uC5D0\uC11C \uACC4\uD68D\uC744 \uC791\uC131\uD560 \uAE30\uB2A5\uC744 \uD655\uC778\uD558\uC138\uC694
|
|
480
|
+
2. \uD574\uB2F9 \uAE30\uB2A5\uC758 \`spec.md\`\uB97C \uC77D\uACE0 \uC694\uAD6C\uC0AC\uD56D\uC744 \uBD84\uC11D\uD558\uC138\uC694
|
|
481
|
+
3. \`sdd new plan <feature-id>\` \uBA85\uB839\uC5B4\uB85C \uACC4\uD68D \uD15C\uD50C\uB9BF\uC744 \uC0DD\uC131\uD558\uAC70\uB098 \uAE30\uC874 \`plan.md\`\uB97C \uC218\uC815\uD558\uC138\uC694
|
|
482
|
+
|
|
483
|
+
## \uACC4\uD68D \uC791\uC131 \uADDC\uCE59
|
|
484
|
+
|
|
485
|
+
- \uAE30\uC220 \uACB0\uC815\uC0AC\uD56D\uACFC \uADF8 \uADFC\uAC70\uB97C \uBA85\uC2DC
|
|
486
|
+
- \uAD6C\uD604 \uB2E8\uACC4(Phase)\uB97C \uB098\uB204\uC5B4 \uC815\uC758
|
|
487
|
+
- \uAC01 \uB2E8\uACC4\uBCC4 \uC0B0\uCD9C\uBB3C \uBAA9\uB85D \uC791\uC131
|
|
488
|
+
- \uB9AC\uC2A4\uD06C \uBD84\uC11D \uBC0F \uC644\uD654 \uC804\uB7B5 \uD3EC\uD568
|
|
489
|
+
- \uD14C\uC2A4\uD2B8 \uC804\uB7B5 \uC218\uB9BD
|
|
490
|
+
|
|
491
|
+
## \uACC4\uD68D \uAD6C\uC870
|
|
492
|
+
|
|
493
|
+
\`\`\`markdown
|
|
494
|
+
## \uAE30\uC220 \uACB0\uC815
|
|
495
|
+
### \uACB0\uC815 1: [\uC81C\uBAA9]
|
|
496
|
+
**\uADFC\uAC70:** [\uC65C \uC774 \uAE30\uC220/\uBC29\uC2DD\uC744 \uC120\uD0DD\uD588\uB294\uC9C0]
|
|
497
|
+
|
|
498
|
+
## \uAD6C\uD604 \uB2E8\uACC4
|
|
499
|
+
### Phase 1: \uAE30\uBC18 \uAD6C\uC870
|
|
500
|
+
[\uC124\uBA85]
|
|
501
|
+
**\uC0B0\uCD9C\uBB3C:**
|
|
502
|
+
- [ ] \uC0B0\uCD9C\uBB3C 1
|
|
503
|
+
- [ ] \uC0B0\uCD9C\uBB3C 2
|
|
504
|
+
|
|
505
|
+
## \uB9AC\uC2A4\uD06C \uBD84\uC11D
|
|
506
|
+
| \uB9AC\uC2A4\uD06C | \uC601\uD5A5\uB3C4 | \uC644\uD654 \uC804\uB7B5 |
|
|
507
|
+
\`\`\`
|
|
508
|
+
|
|
509
|
+
\uC644\uB8CC \uD6C4 \`/sdd-tasks\`\uB85C \uC791\uC5C5\uC744 \uBD84\uD574\uD558\uC138\uC694.
|
|
510
|
+
`
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: "sdd-tasks",
|
|
514
|
+
content: `\uAD6C\uD604 \uACC4\uD68D\uC744 \uC2E4\uD589 \uAC00\uB2A5\uD55C \uC791\uC5C5\uC73C\uB85C \uBD84\uD574\uD569\uB2C8\uB2E4.
|
|
515
|
+
|
|
516
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
517
|
+
|
|
518
|
+
1. \uD574\uB2F9 \uAE30\uB2A5\uC758 \`plan.md\`\uB97C \uC77D\uACE0 \uAD6C\uD604 \uB2E8\uACC4\uB97C \uD655\uC778\uD558\uC138\uC694
|
|
519
|
+
2. \`sdd new tasks <feature-id>\` \uBA85\uB839\uC5B4\uB85C \uC791\uC5C5 \uBAA9\uB85D\uC744 \uC0DD\uC131\uD558\uC138\uC694
|
|
520
|
+
3. \uAC01 \uC791\uC5C5\uC5D0 \uC6B0\uC120\uC21C\uC704\uC640 \uC0C1\uD0DC\uB97C \uC9C0\uC815\uD558\uC138\uC694
|
|
521
|
+
|
|
522
|
+
## \uC791\uC5C5 \uBD84\uD574 \uADDC\uCE59
|
|
523
|
+
|
|
524
|
+
- \uAC01 \uC791\uC5C5\uC740 2-4\uC2DC\uAC04 \uB0B4 \uC644\uB8CC \uAC00\uB2A5\uD55C \uD06C\uAE30\uB85C \uBD84\uD574
|
|
525
|
+
- \uC791\uC5C5 \uAC04 \uC758\uC874\uC131\uC744 \uBA85\uD655\uD788 \uD45C\uC2DC
|
|
526
|
+
- \uC6B0\uC120\uC21C\uC704: HIGH(\u{1F534}), MEDIUM(\u{1F7E1}), LOW(\u{1F7E2})
|
|
527
|
+
- \uC0C1\uD0DC: \uB300\uAE30, \uC9C4\uD589 \uC911, \uC644\uB8CC, \uCC28\uB2E8\uB428
|
|
528
|
+
|
|
529
|
+
## \uC791\uC5C5 \uAD6C\uC870
|
|
530
|
+
|
|
531
|
+
\`\`\`markdown
|
|
532
|
+
### <feature>-task-001: [\uC791\uC5C5 \uC81C\uBAA9]
|
|
533
|
+
|
|
534
|
+
- **\uC0C1\uD0DC:** \uB300\uAE30
|
|
535
|
+
- **\uC6B0\uC120\uC21C\uC704:** \u{1F534} HIGH
|
|
536
|
+
- **\uC758\uC874\uC131:** \uC5C6\uC74C
|
|
537
|
+
|
|
538
|
+
#### \uC124\uBA85
|
|
539
|
+
[\uC791\uC5C5 \uC0C1\uC138 \uC124\uBA85]
|
|
540
|
+
|
|
541
|
+
#### \uC644\uB8CC \uC870\uAC74
|
|
542
|
+
- [ ] \uC870\uAC74 1
|
|
543
|
+
- [ ] \uC870\uAC74 2
|
|
544
|
+
\`\`\`
|
|
545
|
+
|
|
546
|
+
\uC644\uB8CC \uD6C4 \`/sdd-implement\`\uB85C \uAD6C\uD604\uC744 \uC2DC\uC791\uD558\uC138\uC694.
|
|
547
|
+
`
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
name: "sdd-implement",
|
|
551
|
+
content: `\uC791\uC5C5 \uBAA9\uB85D\uC744 \uAE30\uBC18\uC73C\uB85C \uC21C\uCC28\uC801\uC73C\uB85C \uAD6C\uD604\uD569\uB2C8\uB2E4.
|
|
552
|
+
|
|
553
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
554
|
+
|
|
555
|
+
1. \`sdd status\`\uB85C \uD604\uC7AC \uC9C4\uD589 \uC0C1\uD669\uC744 \uD655\uC778\uD558\uC138\uC694
|
|
556
|
+
2. \uD574\uB2F9 \uAE30\uB2A5\uC758 \`tasks.md\`\uB97C \uC77D\uACE0 \uB2E4\uC74C \uC791\uC5C5\uC744 \uD655\uC778\uD558\uC138\uC694
|
|
557
|
+
3. \uC791\uC5C5\uC744 \uAD6C\uD604\uD558\uACE0 \uC644\uB8CC \uC2DC \uC0C1\uD0DC\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uC138\uC694
|
|
558
|
+
|
|
559
|
+
## \uAD6C\uD604 \uADDC\uCE59
|
|
560
|
+
|
|
561
|
+
- \uD55C \uBC88\uC5D0 \uD558\uB098\uC758 \uC791\uC5C5\uB9CC \uC9C4\uD589
|
|
562
|
+
- \uAC01 \uC791\uC5C5 \uC644\uB8CC \uD6C4 \uD14C\uC2A4\uD2B8 \uC791\uC131 \uD544\uC218
|
|
563
|
+
- \uCEE4\uBC0B \uBA54\uC2DC\uC9C0\uC5D0 \uC791\uC5C5 ID \uD3EC\uD568
|
|
564
|
+
- \`.sdd/constitution.md\`\uC758 \uC6D0\uCE59 \uC900\uC218
|
|
565
|
+
|
|
566
|
+
## \uC791\uC5C5 \uD750\uB984
|
|
567
|
+
|
|
568
|
+
1. \uC791\uC5C5 \uC0C1\uD0DC\uB97C "\uC9C4\uD589 \uC911"\uC73C\uB85C \uBCC0\uACBD
|
|
569
|
+
2. \uCF54\uB4DC \uAD6C\uD604
|
|
570
|
+
3. \uD14C\uC2A4\uD2B8 \uC791\uC131 \uBC0F \uC2E4\uD589
|
|
571
|
+
4. \uC791\uC5C5 \uC0C1\uD0DC\uB97C "\uC644\uB8CC"\uB85C \uBCC0\uACBD
|
|
572
|
+
5. \uCEE4\uBC0B: \`feat(<feature>): <task-id> - <\uC124\uBA85>\`
|
|
573
|
+
|
|
574
|
+
## \uC644\uB8CC \uC870\uAC74
|
|
575
|
+
|
|
576
|
+
\uBAA8\uB4E0 \uC791\uC5C5\uC774 \uC644\uB8CC\uB418\uBA74:
|
|
577
|
+
1. \`sdd validate\`\uB85C \uCD5C\uC885 \uAC80\uC99D
|
|
578
|
+
2. PR \uC0DD\uC131 \uB610\uB294 \uBA38\uC9C0
|
|
579
|
+
3. \uD544\uC694\uC2DC \`/sdd-archive\`\uB85C \uC544\uCE74\uC774\uBE0C
|
|
580
|
+
`
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
name: "sdd-validate",
|
|
584
|
+
content: `\uC2A4\uD399 \uD30C\uC77C\uC758 \uD615\uC2DD\uACFC \uADDC\uCE59\uC744 \uAC80\uC99D\uD569\uB2C8\uB2E4.
|
|
585
|
+
|
|
586
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
587
|
+
|
|
588
|
+
\`sdd validate\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC5EC \uBAA8\uB4E0 \uC2A4\uD399\uC744 \uAC80\uC99D\uD558\uC138\uC694.
|
|
589
|
+
|
|
590
|
+
## \uAC80\uC99D \uD56D\uBAA9
|
|
591
|
+
|
|
592
|
+
1. **RFC 2119 \uD0A4\uC6CC\uB4DC**: SHALL, MUST, SHOULD, MAY \uB4F1 \uD3EC\uD568 \uC5EC\uBD80
|
|
593
|
+
2. **GIVEN-WHEN-THEN**: \uC2DC\uB098\uB9AC\uC624 \uD615\uC2DD \uC900\uC218 \uC5EC\uBD80
|
|
594
|
+
3. **\uBA54\uD0C0\uB370\uC774\uD130**: YAML frontmatter \uD544\uC218 \uD544\uB4DC \uD655\uC778
|
|
595
|
+
4. **\uAD6C\uC870**: \uD544\uC218 \uC139\uC158 \uC874\uC7AC \uC5EC\uBD80
|
|
596
|
+
|
|
597
|
+
## \uC0AC\uC6A9\uBC95
|
|
598
|
+
|
|
599
|
+
\`\`\`bash
|
|
600
|
+
# \uC804\uCCB4 \uC2A4\uD399 \uAC80\uC99D
|
|
601
|
+
sdd validate
|
|
602
|
+
|
|
603
|
+
# \uD2B9\uC815 \uD30C\uC77C \uAC80\uC99D
|
|
604
|
+
sdd validate .sdd/specs/user-auth/spec.md
|
|
605
|
+
|
|
606
|
+
# \uC5C4\uACA9 \uBAA8\uB4DC (\uACBD\uACE0\uB3C4 \uC5D0\uB7EC\uB85C \uCC98\uB9AC)
|
|
607
|
+
sdd validate --strict
|
|
608
|
+
\`\`\`
|
|
609
|
+
|
|
610
|
+
## \uC624\uB958 \uD574\uACB0
|
|
611
|
+
|
|
612
|
+
\uAC80\uC99D \uC2E4\uD328 \uC2DC \uD574\uB2F9 \uD30C\uC77C\uC744 \uC5F4\uC5B4 \uC624\uB958\uB97C \uC218\uC815\uD558\uC138\uC694.
|
|
613
|
+
\uAC01 \uC624\uB958 \uBA54\uC2DC\uC9C0\uC5D0\uB294 \uD574\uACB0 \uBC29\uBC95\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
|
|
614
|
+
`
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
name: "sdd-status",
|
|
618
|
+
content: `\uD604\uC7AC SDD \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD569\uB2C8\uB2E4.
|
|
619
|
+
|
|
620
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
621
|
+
|
|
622
|
+
\`sdd status\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC5EC \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC138\uC694.
|
|
623
|
+
|
|
624
|
+
## \uD655\uC778 \uD56D\uBAA9
|
|
625
|
+
|
|
626
|
+
- \uD504\uB85C\uC81D\uD2B8 \uAD6C\uC870 (constitution.md, AGENTS.md \uC874\uC7AC \uC5EC\uBD80)
|
|
627
|
+
- \uAE30\uB2A5 \uBAA9\uB85D \uBC0F \uC0C1\uD0DC
|
|
628
|
+
- \uD604\uC7AC Git \uBE0C\uB79C\uCE58
|
|
629
|
+
- \uB2E4\uC74C \uB2E8\uACC4 \uC81C\uC548
|
|
630
|
+
|
|
631
|
+
## \uCD94\uAC00 \uBA85\uB839\uC5B4
|
|
632
|
+
|
|
633
|
+
\`\`\`bash
|
|
634
|
+
# \uD504\uB85C\uC81D\uD2B8 \uC694\uC57D
|
|
635
|
+
sdd list
|
|
636
|
+
|
|
637
|
+
# \uAE30\uB2A5 \uBAA9\uB85D
|
|
638
|
+
sdd list features
|
|
639
|
+
|
|
640
|
+
# \uC2A4\uD399 \uD30C\uC77C \uBAA9\uB85D
|
|
641
|
+
sdd list specs
|
|
642
|
+
|
|
643
|
+
# JSON \uD615\uC2DD \uCD9C\uB825
|
|
644
|
+
sdd status --json
|
|
645
|
+
\`\`\`
|
|
646
|
+
`
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
name: "sdd-change",
|
|
650
|
+
content: `\uAE30\uC874 \uC2A4\uD399\uC5D0 \uB300\uD55C \uBCC0\uACBD\uC744 \uC81C\uC548\uD569\uB2C8\uB2E4.
|
|
651
|
+
|
|
652
|
+
## \uC9C0\uC2DC\uC0AC\uD56D
|
|
653
|
+
|
|
654
|
+
1. \uBCC0\uACBD\uC774 \uD544\uC694\uD55C \uC2A4\uD399\uC744 \uD655\uC778\uD558\uC138\uC694
|
|
655
|
+
2. \`.sdd/changes/\` \uB514\uB809\uD1A0\uB9AC\uC5D0 \uBCC0\uACBD \uC81C\uC548\uC11C\uB97C \uC791\uC131\uD558\uC138\uC694
|
|
656
|
+
3. \uBCC0\uACBD \uC720\uD615(ADDED, MODIFIED, REMOVED)\uC744 \uBA85\uC2DC\uD558\uC138\uC694
|
|
657
|
+
|
|
658
|
+
## \uBCC0\uACBD \uC81C\uC548\uC11C \uAD6C\uC870
|
|
659
|
+
|
|
660
|
+
\`\`\`markdown
|
|
661
|
+
---
|
|
662
|
+
id: CHG-001
|
|
663
|
+
status: draft
|
|
664
|
+
created: YYYY-MM-DD
|
|
665
|
+
---
|
|
666
|
+
|
|
667
|
+
# \uBCC0\uACBD \uC81C\uC548: [\uC81C\uBAA9]
|
|
668
|
+
|
|
669
|
+
## \uBC30\uACBD
|
|
670
|
+
\uC65C \uC774 \uBCC0\uACBD\uC774 \uD544\uC694\uD55C\uAC00?
|
|
671
|
+
|
|
672
|
+
## \uC601\uD5A5 \uBC94\uC704
|
|
673
|
+
### \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399
|
|
674
|
+
- \`specs/user-auth/spec.md\`
|
|
675
|
+
|
|
676
|
+
### \uBCC0\uACBD \uC720\uD615
|
|
677
|
+
- [x] \uC218\uC815 (MODIFIED)
|
|
678
|
+
|
|
679
|
+
## \uBCC0\uACBD \uB0B4\uC6A9
|
|
680
|
+
|
|
681
|
+
### MODIFIED
|
|
682
|
+
|
|
683
|
+
#### Before
|
|
684
|
+
\`\`\`markdown
|
|
685
|
+
\uAE30\uC874 \uB0B4\uC6A9
|
|
686
|
+
\`\`\`
|
|
687
|
+
|
|
688
|
+
#### After
|
|
689
|
+
\`\`\`markdown
|
|
690
|
+
\uBCC0\uACBD\uB41C \uB0B4\uC6A9
|
|
691
|
+
\`\`\`
|
|
692
|
+
\`\`\`
|
|
693
|
+
|
|
694
|
+
\uAC80\uD1A0 \uD6C4 \uC2B9\uC778\uB418\uBA74 \uC2A4\uD399\uC5D0 \uBC18\uC601\uD558\uC138\uC694.
|
|
695
|
+
`
|
|
696
|
+
}
|
|
697
|
+
];
|
|
698
|
+
}
|
|
699
|
+
|
|
437
700
|
// src/cli/commands/init.ts
|
|
438
701
|
function registerInitCommand(program2) {
|
|
439
702
|
program2.command("init").description("SDD \uD504\uB85C\uC81D\uD2B8\uB97C \uCD08\uAE30\uD654\uD569\uB2C8\uB2E4").option("-f, --force", "\uAE30\uC874 .sdd/ \uB514\uB809\uD1A0\uB9AC \uB36E\uC5B4\uC4F0\uAE30").action(async (options) => {
|
|
@@ -461,7 +724,9 @@ async function runInit(options) {
|
|
|
461
724
|
".sdd/specs",
|
|
462
725
|
".sdd/changes",
|
|
463
726
|
".sdd/archive",
|
|
464
|
-
".sdd/templates"
|
|
727
|
+
".sdd/templates",
|
|
728
|
+
".claude",
|
|
729
|
+
".claude/commands"
|
|
465
730
|
];
|
|
466
731
|
for (const dir of directories) {
|
|
467
732
|
const result = await ensureDir(path2.join(cwd, dir));
|
|
@@ -472,6 +737,7 @@ async function runInit(options) {
|
|
|
472
737
|
}
|
|
473
738
|
await createDefaultFiles(cwd);
|
|
474
739
|
await copyTemplates(cwd);
|
|
740
|
+
await createClaudeCommands(cwd);
|
|
475
741
|
success2("SDD \uD504\uB85C\uC81D\uD2B8\uAC00 \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
476
742
|
newline();
|
|
477
743
|
info("\uC0DD\uC131\uB41C \uAD6C\uC870:");
|
|
@@ -482,10 +748,21 @@ async function runInit(options) {
|
|
|
482
748
|
listItem("changes/", 1);
|
|
483
749
|
listItem("archive/", 1);
|
|
484
750
|
listItem("templates/", 1);
|
|
751
|
+
listItem(".claude/");
|
|
752
|
+
listItem("commands/", 1);
|
|
753
|
+
newline();
|
|
754
|
+
info("Claude \uC2AC\uB798\uC2DC \uCEE4\uB9E8\uB4DC:");
|
|
755
|
+
listItem("/sdd-new - \uC0C8 \uAE30\uB2A5 \uBA85\uC138 \uC791\uC131");
|
|
756
|
+
listItem("/sdd-plan - \uAD6C\uD604 \uACC4\uD68D \uC791\uC131");
|
|
757
|
+
listItem("/sdd-tasks - \uC791\uC5C5 \uBD84\uD574");
|
|
758
|
+
listItem("/sdd-implement - \uAD6C\uD604 \uC9C4\uD589");
|
|
759
|
+
listItem("/sdd-validate - \uC2A4\uD399 \uAC80\uC99D");
|
|
760
|
+
listItem("/sdd-status - \uC0C1\uD0DC \uD655\uC778");
|
|
761
|
+
listItem("/sdd-change - \uBCC0\uACBD \uC81C\uC548");
|
|
485
762
|
newline();
|
|
486
763
|
info("\uB2E4\uC74C \uB2E8\uACC4:");
|
|
487
764
|
listItem("constitution.md\uB97C \uC218\uC815\uD558\uC5EC \uD504\uB85C\uC81D\uD2B8 \uC6D0\uCE59\uC744 \uC815\uC758\uD558\uC138\uC694");
|
|
488
|
-
listItem("
|
|
765
|
+
listItem("/sdd-new \uB85C \uCCAB \uBC88\uC9F8 \uAE30\uB2A5 \uBA85\uC138\uB97C \uC791\uC131\uD558\uC138\uC694");
|
|
489
766
|
}
|
|
490
767
|
async function createDefaultFiles(cwd) {
|
|
491
768
|
const projectName = path2.basename(cwd);
|
|
@@ -709,6 +986,15 @@ graph LR
|
|
|
709
986
|
await writeFile(path2.join(cwd, ".sdd", "templates", "delta.md"), deltaTemplate);
|
|
710
987
|
await writeFile(path2.join(cwd, ".sdd", "templates", "tasks.md"), tasksTemplate);
|
|
711
988
|
}
|
|
989
|
+
async function createClaudeCommands(cwd) {
|
|
990
|
+
const commands = generateClaudeCommands();
|
|
991
|
+
for (const cmd of commands) {
|
|
992
|
+
await writeFile(
|
|
993
|
+
path2.join(cwd, ".claude", "commands", `${cmd.name}.md`),
|
|
994
|
+
cmd.content
|
|
995
|
+
);
|
|
996
|
+
}
|
|
997
|
+
}
|
|
712
998
|
|
|
713
999
|
// src/cli/commands/validate.ts
|
|
714
1000
|
import path4 from "path";
|