timsquad 3.5.0 → 3.6.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.
Files changed (160) hide show
  1. package/README.ko.md +4 -0
  2. package/README.md +4 -0
  3. package/dist/commands/audit.d.ts +22 -0
  4. package/dist/commands/audit.d.ts.map +1 -0
  5. package/dist/commands/audit.js +233 -0
  6. package/dist/commands/audit.js.map +1 -0
  7. package/dist/commands/compile.d.ts.map +1 -1
  8. package/dist/commands/compile.js +84 -3
  9. package/dist/commands/compile.js.map +1 -1
  10. package/dist/commands/daemon.d.ts.map +1 -1
  11. package/dist/commands/daemon.js +48 -2
  12. package/dist/commands/daemon.js.map +1 -1
  13. package/dist/commands/init.js +42 -6
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/log.d.ts.map +1 -1
  16. package/dist/commands/log.js +32 -0
  17. package/dist/commands/log.js.map +1 -1
  18. package/dist/commands/meta-index.d.ts.map +1 -1
  19. package/dist/commands/meta-index.js +30 -0
  20. package/dist/commands/meta-index.js.map +1 -1
  21. package/dist/commands/retro.d.ts.map +1 -1
  22. package/dist/commands/retro.js +63 -6
  23. package/dist/commands/retro.js.map +1 -1
  24. package/dist/commands/workflow.d.ts +2 -0
  25. package/dist/commands/workflow.d.ts.map +1 -1
  26. package/dist/commands/workflow.js +180 -6
  27. package/dist/commands/workflow.js.map +1 -1
  28. package/dist/daemon/context-writer.d.ts +14 -0
  29. package/dist/daemon/context-writer.d.ts.map +1 -1
  30. package/dist/daemon/context-writer.js +29 -0
  31. package/dist/daemon/context-writer.js.map +1 -1
  32. package/dist/daemon/event-queue.d.ts +4 -0
  33. package/dist/daemon/event-queue.d.ts.map +1 -1
  34. package/dist/daemon/event-queue.js +107 -6
  35. package/dist/daemon/event-queue.js.map +1 -1
  36. package/dist/daemon/file-watcher.d.ts +14 -8
  37. package/dist/daemon/file-watcher.d.ts.map +1 -1
  38. package/dist/daemon/file-watcher.js +78 -41
  39. package/dist/daemon/file-watcher.js.map +1 -1
  40. package/dist/daemon/index.d.ts.map +1 -1
  41. package/dist/daemon/index.js +42 -36
  42. package/dist/daemon/index.js.map +1 -1
  43. package/dist/index.js +2 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/lib/agent-generator.d.ts.map +1 -1
  46. package/dist/lib/agent-generator.js +11 -0
  47. package/dist/lib/agent-generator.js.map +1 -1
  48. package/dist/lib/compile-rules.d.ts +2 -0
  49. package/dist/lib/compile-rules.d.ts.map +1 -1
  50. package/dist/lib/compile-rules.js +2 -0
  51. package/dist/lib/compile-rules.js.map +1 -1
  52. package/dist/lib/compiler.d.ts +21 -1
  53. package/dist/lib/compiler.d.ts.map +1 -1
  54. package/dist/lib/compiler.js +113 -3
  55. package/dist/lib/compiler.js.map +1 -1
  56. package/dist/lib/config.d.ts +3 -0
  57. package/dist/lib/config.d.ts.map +1 -1
  58. package/dist/lib/config.js +17 -2
  59. package/dist/lib/config.js.map +1 -1
  60. package/dist/lib/skill-generator.d.ts +1 -1
  61. package/dist/lib/skill-generator.d.ts.map +1 -1
  62. package/dist/lib/skill-generator.js +17 -2
  63. package/dist/lib/skill-generator.js.map +1 -1
  64. package/dist/lib/ssot-map.d.ts +31 -0
  65. package/dist/lib/ssot-map.d.ts.map +1 -0
  66. package/dist/lib/ssot-map.js +76 -0
  67. package/dist/lib/ssot-map.js.map +1 -0
  68. package/dist/lib/template.js +1 -0
  69. package/dist/lib/template.js.map +1 -1
  70. package/dist/lib/workflow-state.d.ts +1 -1
  71. package/dist/lib/workflow-state.d.ts.map +1 -1
  72. package/dist/lib/workflow-state.js +1 -1
  73. package/dist/lib/workflow-state.js.map +1 -1
  74. package/dist/types/config.d.ts +10 -1
  75. package/dist/types/config.d.ts.map +1 -1
  76. package/dist/types/config.js +22 -17
  77. package/dist/types/config.js.map +1 -1
  78. package/dist/types/index.d.ts +1 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/index.js +1 -0
  81. package/dist/types/index.js.map +1 -1
  82. package/dist/types/meta-index.d.ts +8 -0
  83. package/dist/types/meta-index.d.ts.map +1 -1
  84. package/dist/types/project.d.ts +1 -1
  85. package/dist/types/project.d.ts.map +1 -1
  86. package/dist/types/project.js.map +1 -1
  87. package/dist/types/ssot-map.d.ts +28 -0
  88. package/dist/types/ssot-map.d.ts.map +1 -0
  89. package/dist/types/ssot-map.js +6 -0
  90. package/dist/types/ssot-map.js.map +1 -0
  91. package/package.json +1 -1
  92. package/templates/base/agents/base/tsq-librarian.md +45 -0
  93. package/templates/base/skills/_shared/naming-conventions.md +49 -0
  94. package/templates/base/skills/_template/SKILL.md +33 -17
  95. package/templates/base/skills/audit/SKILL.md +66 -0
  96. package/templates/base/skills/coding/SKILL.md +49 -29
  97. package/templates/base/skills/coding/rules/async-patterns.md +81 -0
  98. package/templates/base/skills/coding/rules/code-organization.md +80 -0
  99. package/templates/base/skills/coding/rules/error-handling.md +76 -0
  100. package/templates/base/skills/coding/rules/type-safety.md +85 -0
  101. package/templates/base/skills/controller/SKILL.md +50 -84
  102. package/templates/base/skills/controller/delegation/developer.md +25 -0
  103. package/templates/base/skills/controller/delegation/librarian.md +33 -0
  104. package/templates/base/skills/controller/delegation/reviewer.md +19 -0
  105. package/templates/base/skills/controller/memory/.gitkeep +0 -0
  106. package/templates/base/skills/controller/triggers/phase-complete.md +25 -0
  107. package/templates/base/skills/controller/triggers/sequence-complete.md +15 -0
  108. package/templates/base/skills/controller/triggers/ssot-changed.md +14 -0
  109. package/templates/base/skills/controller/triggers/task-complete.md +14 -0
  110. package/templates/base/skills/database/SKILL.md +8 -25
  111. package/templates/base/skills/database/rules/query-optimization.md +32 -0
  112. package/templates/base/skills/database/rules/supabase-patterns.md +94 -0
  113. package/templates/base/skills/librarian/SKILL.md +53 -0
  114. package/templates/base/skills/main-session-constraints/SKILL.md +62 -0
  115. package/templates/base/skills/methodology/tdd/SKILL.md +6 -0
  116. package/templates/base/skills/product-audit/SKILL.md +115 -0
  117. package/templates/base/skills/product-audit/checklists/01-security.md +86 -0
  118. package/templates/base/skills/product-audit/checklists/02-performance.md +67 -0
  119. package/templates/base/skills/product-audit/checklists/03-seo.md +46 -0
  120. package/templates/base/skills/product-audit/checklists/04-accessibility.md +66 -0
  121. package/templates/base/skills/product-audit/checklists/05-ui-ux.md +50 -0
  122. package/templates/base/skills/product-audit/checklists/06-architecture.md +53 -0
  123. package/templates/base/skills/product-audit/checklists/07-functional-requirements.md +55 -0
  124. package/templates/base/skills/product-audit/rules/audit-protocol.md +136 -0
  125. package/templates/base/skills/product-audit/rules/false-positive-guard.md +81 -0
  126. package/templates/base/skills/product-audit/rules/scoring-criteria.md +113 -0
  127. package/templates/base/skills/product-audit/templates/improvement-plan-template.md +60 -0
  128. package/templates/base/skills/product-audit/templates/report-template.md +88 -0
  129. package/templates/base/skills/prompt-engineering/SKILL.md +54 -73
  130. package/templates/base/skills/retrospective/SKILL.md +70 -95
  131. package/templates/base/skills/retrospective/references/improvement-template.md +26 -0
  132. package/templates/base/skills/review/SKILL.md +72 -0
  133. package/templates/base/skills/security/SKILL.md +50 -37
  134. package/templates/base/skills/security/rules/auth-patterns.md +62 -0
  135. package/templates/base/skills/security/rules/dependency-security.md +69 -0
  136. package/templates/base/skills/security/rules/input-validation.md +68 -0
  137. package/templates/base/skills/security/rules/secrets-management.md +65 -0
  138. package/templates/base/skills/spec/SKILL.md +60 -0
  139. package/templates/base/skills/testing/SKILL.md +33 -25
  140. package/templates/base/skills/testing/references/e2e-stability.md +33 -0
  141. package/templates/base/skills/tsq-cli/SKILL.md +73 -0
  142. package/templates/base/skills/tsq-cli/references/cli-reference.md +92 -0
  143. package/templates/base/skills/tsq-protocol/SKILL.md +41 -25
  144. package/templates/base/skills/typescript/SKILL.md +3 -9
  145. package/templates/base/timsquad/ssot/test-spec.template.md +11 -1
  146. package/templates/base/timsquad/ssot-map.template.yaml +41 -0
  147. package/templates/platforms/claude-code/rules/api-conventions.md +12 -0
  148. package/templates/platforms/claude-code/rules/librarian-constraints.md +11 -0
  149. package/templates/platforms/claude-code/rules/test-conventions.md +13 -0
  150. package/templates/platforms/claude-code/scripts/change-scope-guard.sh +113 -0
  151. package/templates/platforms/claude-code/scripts/completion-guard.sh +75 -13
  152. package/templates/platforms/claude-code/scripts/context-restore.sh +68 -0
  153. package/templates/platforms/claude-code/scripts/e2e-commit-gate.sh +70 -0
  154. package/templates/platforms/claude-code/scripts/e2e-marker.sh +51 -0
  155. package/templates/platforms/claude-code/scripts/phase-guard.sh +1 -1
  156. package/templates/platforms/claude-code/scripts/pre-compact.sh +70 -0
  157. package/templates/platforms/claude-code/scripts/skill-inject.sh +216 -0
  158. package/templates/platforms/claude-code/scripts/skill-rules.json +11 -1
  159. package/templates/platforms/claude-code/scripts/subagent-inject.sh +53 -0
  160. package/templates/platforms/claude-code/settings.json +27 -1
@@ -0,0 +1,88 @@
1
+ ---
2
+ title: Audit Report Template
3
+ category: template
4
+ source: internal
5
+ ---
6
+
7
+ # Audit Report
8
+
9
+ ## 개요
10
+
11
+ - **프로젝트**: {프로젝트명}
12
+ - **감사일**: {날짜}
13
+ - **범위**: {대상 모듈/페이지}
14
+ - **감사 유형**: 최초 감사 / 재감사
15
+ - **이전 감사일**: {재감사 시}
16
+
17
+ ## 종합 결과
18
+
19
+ | 항목 | 값 |
20
+ |------|:--:|
21
+ | **종합 점수** | {점수}/100 |
22
+ | **등급** | {A/B/C/D/F} |
23
+ | **Gate 통과** | {PASS/FAIL} |
24
+
25
+ ## 영역별 점수
26
+
27
+ | # | 영역 | 점수 | 가중치 | 가중 점수 |
28
+ |---|------|:----:|:------:|:---------:|
29
+ | 01 | Security | {점수} | {%} | {가중점수} |
30
+ | 02 | Performance | {점수} | {%} | {가중점수} |
31
+ | 03 | SEO | {점수} | {%} | {가중점수} |
32
+ | 04 | Accessibility | {점수} | {%} | {가중점수} |
33
+ | 05 | UI/UX | {점수} | {%} | {가중점수} |
34
+ | 06 | Architecture & DB | {점수} | {%} | {가중점수} |
35
+ | 07 | Functional & Requirements | {점수} | {%} | {가중점수} |
36
+ | | **합계** | | **100%** | **{종합}** |
37
+
38
+ ## Severity 분포
39
+
40
+ | Severity | 건수 | 해결 | 미해결 |
41
+ |----------|:----:|:----:|:------:|
42
+ | Critical | {n} | {n} | {n} |
43
+ | High | {n} | {n} | {n} |
44
+ | Medium | {n} | {n} | {n} |
45
+ | Low | {n} | {n} | {n} |
46
+
47
+ ## Findings
48
+
49
+ ### Critical
50
+
51
+ | # | 영역 | 항목 | Source | 설명 |
52
+ |---|------|------|:------:|------|
53
+ | 1 | {영역} | {항목 ID} | {measured/estimated} | {상세 설명} |
54
+
55
+ ### High
56
+
57
+ | # | 영역 | 항목 | Source | 설명 |
58
+ |---|------|------|:------:|------|
59
+ | 1 | {영역} | {항목 ID} | {measured/estimated} | {상세 설명} |
60
+
61
+ ### Medium / Low
62
+
63
+ | # | 영역 | 항목 | Severity | Source | 설명 |
64
+ |---|------|------|:--------:|:------:|------|
65
+ | 1 | {영역} | {항목 ID} | {M/L} | {measured/estimated} | {상세 설명} |
66
+
67
+ ## False Positives (점수 산출 제외)
68
+
69
+ | FP ID | 영역 | 항목 | Reason |
70
+ |-------|------|------|--------|
71
+ | FP-{n} | {영역} | {항목} | {근거} |
72
+
73
+ ## 재감사 Diff (재감사 시)
74
+
75
+ | 변환 | 건수 | 비고 |
76
+ |------|:----:|------|
77
+ | FAIL → PASS | {n} | 개선됨 |
78
+ | PASS → PASS | {n} | 유지됨 |
79
+ | PASS → FAIL | {n} | 회귀 — 즉시 대응 |
80
+ | FAIL → FAIL | {n} | 미해결 |
81
+
82
+ ## 품질 지표
83
+
84
+ | 지표 | 값 | 기준 |
85
+ |------|:--:|:----:|
86
+ | estimated 비율 | {%} | < 50% |
87
+ | FP 비율 | {%} | < 20% |
88
+ | 항목 적용률 | {%} | - |
@@ -1,35 +1,63 @@
1
1
  ---
2
2
  name: prompt-engineering
3
- description: 프롬프트 최적화, 템플릿 관리, 회고 기반 개선 가이드라인
3
+ description: |
4
+ 에이전트/스킬 프롬프트 최적화, 템플릿 관리, 회고 기반 개선 가이드라인.
5
+ Use when: 프롬프트 작성·수정, 스킬 템플릿 작성, 회고에서 프롬프트 개선 대상이 발견됐을 때,
6
+ 에이전트 응답 품질이 낮을 때, SKILL.md나 에이전트 .md 파일을 편집할 때.
4
7
  version: "1.0.0"
5
8
  tags: [prompt, optimization, retrospective]
6
9
  user-invocable: false
7
10
  ---
8
11
 
9
- <skill name="prompt-engineering">
10
- <purpose>에이전트/스킬 프롬프트 최적화 및 품질 개선</purpose>
11
-
12
- <optimization-principles>
13
- <principle name="구조화">
14
- 역할 → 페르소나 → 작업 전 필수 → 핵심 원칙 → 작업 프로세스 → 출력 형식 → 금지 사항 → 예시
15
- </principle>
16
- <principle name="명확성">
17
- | Bad | Good |
18
- |-----|------|
19
- | "잘 작성해" | "3문장 이내로 요약해" |
20
- | "좋은 코드" | "테스트 커버리지 80%" |
21
- | 나열만 | "필수/권장/선택" 분류 |
22
- </principle>
23
- <principle name="컨텍스트">
24
- 프로젝트 정보, 참조 문서 경로, 제약 사항을 명시적으로 주입
25
- </principle>
26
- <principle name="예시 포함">
27
- Good/Bad 예시를 함께 제공하여 기대 품질 수준 명확화
28
- </principle>
29
- </optimization-principles>
30
-
31
- <template-format>
32
- <![CDATA[
12
+ # Prompt Engineering
13
+
14
+ 에이전트와 스킬 프롬프트의 품질을 체계적으로 개선하기 위한 가이드라인.
15
+
16
+ ## 최적화 원칙
17
+
18
+ ### 구조화
19
+ 역할 → 페르소나 → 작업 전 필수 → 핵심 원칙 → 작업 프로세스 → 출력 형식 → 금지 사항 → 예시
20
+
21
+ ### 명확성
22
+
23
+ | Bad | Good |
24
+ |-----|------|
25
+ | "잘 작성해" | "3문장 이내로 요약해" |
26
+ | "좋은 코드" | "테스트 커버리지 80%" |
27
+ | 나열만 | "필수/권장/선택" 분류 |
28
+
29
+ 모호한 표현은 측정 가능한 기준으로 바꾼다. 모델은 명확한 기준이 있을 때 더 일관된 결과를 낸다.
30
+
31
+ ### 컨텍스트
32
+ 프로젝트 정보, 참조 문서 경로, 제약 사항을 명시적으로 주입한다. 모델이 추측해야 하는 정보가 줄어들수록 정확도가 올라간다.
33
+
34
+ ### 예시 포함
35
+ Good/Bad 예시를 함께 제공하여 기대 품질 수준을 명확화한다.
36
+
37
+ ## 개선 매핑 프로세스
38
+
39
+ 패턴에서 프롬프트 개선으로 이어지는 흐름:
40
+
41
+ 1. 실패/성공 패턴 식별 (회고 스킬에서)
42
+ 2. 대상 에이전트/스킬 .md 파일 특정
43
+ 3. 변경 전/후 diff 작성
44
+ 4. 기대 효과 및 검증 방법 명시
45
+ 5. 사용자 승인 후 적용
46
+
47
+ ## 품질 체크리스트
48
+
49
+ | 항목 | 검증 내용 |
50
+ |-----|----------|
51
+ | 명확성 | 모호한 표현이 없는가? |
52
+ | 완전성 | 필요한 정보가 모두 있는가? |
53
+ | 구조화 | 논리적 순서로 구성되었는가? |
54
+ | 예시 | Good/Bad 예시가 있는가? |
55
+ | 제약 | 금지 사항이 명시되었는가? |
56
+ | 출력 | 기대 출력 형식이 정의되었는가? |
57
+
58
+ ## 템플릿 형식
59
+
60
+ ```markdown
33
61
  ---
34
62
  name: {template-name}
35
63
  version: 1.0.0
@@ -53,51 +81,4 @@ task_type: {implementation|review|analysis}
53
81
 
54
82
  ## 검증 기준
55
83
  {{VALIDATION_CRITERIA}}
56
- ]]>
57
- </template-format>
58
-
59
- <version-management>
60
- | 변경 유형 | 버전 증가 | 예시 |
61
- |---------|----------|------|
62
- | 구조 변경 | Major (x.0.0) | 섹션 추가/삭제 |
63
- | 내용 수정 | Minor (0.x.0) | 규칙 추가, 예시 수정 |
64
- | 오타 수정 | Patch (0.0.x) | 단순 수정 |
65
- </version-management>
66
-
67
- <rollback-conditions>
68
- | 조건 | 액션 |
69
- |-----|------|
70
- | 성공률 10% 하락 | 이전 버전 롤백 |
71
- | Critical 피드백 발생 | 즉시 롤백 + 분석 |
72
- | A/B 테스트 실패 | 기존 버전 유지 |
73
- </rollback-conditions>
74
-
75
- <improvement-mapping>
76
- 패턴 → 프롬프트 개선 매핑 프로세스:
77
- 1. 실패/성공 패턴 식별 (회고 스킬에서)
78
- 2. 대상 에이전트/스킬 .md 파일 특정
79
- 3. 변경 전/후 diff 작성
80
- 4. 기대 효과 및 검증 방법 명시
81
- 5. 사용자 승인 후 적용
82
- </improvement-mapping>
83
-
84
- <quality-checklist>
85
- | 항목 | 검증 내용 |
86
- |-----|----------|
87
- | 명확성 | 모호한 표현이 없는가? |
88
- | 완전성 | 필요한 정보가 모두 있는가? |
89
- | 구조화 | 논리적 순서로 구성되었는가? |
90
- | 예시 | Good/Bad 예시가 있는가? |
91
- | 제약 | 금지 사항이 명시되었는가? |
92
- | 출력 | 기대 출력 형식이 정의되었는가? |
93
- </quality-checklist>
94
-
95
- <effectiveness-metrics>
96
- | 메트릭 | 측정 방법 | 목표 |
97
- |-------|----------|:----:|
98
- | 작업 성공률 | 성공 작업 / 전체 작업 | 90%+ |
99
- | 수정 횟수 | 평균 수정 횟수 | 2 미만 |
100
- | 피드백 레벨 | Level 2+ 피드백 비율 | 10% 미만 |
101
- | SSOT 정합성 | SSOT 불일치 건수 | 0 |
102
- </effectiveness-metrics>
103
- </skill>
84
+ ```
@@ -1,102 +1,77 @@
1
1
  ---
2
2
  name: retrospective
3
- description: 회고 분석, 패턴 식별, 개선 제안 가이드라인
3
+ description: |
4
+ 회고 분석, 패턴 식별, 개선 제안 가이드라인.
5
+ Use when: tsq retro 명령 실행 시, Phase 완료 후 회고 수집 시, 패턴 분석이 필요할 때,
6
+ KPT 프레임워크로 피드백 정리할 때, 메트릭 기반 개선 방안을 도출할 때.
4
7
  version: "1.0.0"
5
8
  tags: [retrospective, analysis, improvement]
6
9
  user-invocable: false
7
10
  ---
8
11
 
9
- <skill name="retrospective">
10
- <purpose>프로젝트 회고를 위한 분석 프레임워크와 개선 프로세스</purpose>
11
-
12
- <tsq-cli priority="critical">
13
- <instruction>
14
- 로그 기록, 피드백, 메트릭, 회고 등 TSQ CLI가 제공하는 기능은 반드시 CLI 커맨드를 사용하세요.
15
- 직접 파일을 조작하지 마세요. CLI 사용해야 구조화된 데이터가 자동 저장됩니다.
16
- </instruction>
17
- <commands>
18
- | 시점 | 커맨드 |
19
- |-----|--------|
20
- | 회고 시작 | `tsq retro start` |
21
- | Phase별 회고 | `tsq retro phase {phase}` |
22
- | 메트릭 수집 | `tsq retro collect` 또는 `tsq metrics collect` |
23
- | 로그 확인 | `tsq log list` / `tsq log today` |
24
- | 리포트 생성 | `tsq retro report` (GitHub Issue 포함) |
25
- | 로컬 리포트만 | `tsq retro report --local` |
26
- | 사이클 완료 | `tsq retro apply` |
27
- </commands>
28
- </tsq-cli>
29
-
30
- <references>
31
- <reference path=".timsquad/retrospective/metrics/">메트릭 데이터</reference>
32
- <reference path=".timsquad/logs/">작업 로그</reference>
33
- <reference path=".timsquad/retrospective/patterns/">기존 패턴</reference>
34
- <reference path=".timsquad/state/workspace.xml">작업 이력</reference>
35
- </references>
36
-
37
- <kpt-framework>
38
- <description>Keep-Problem-Try 회고 프레임워크</description>
39
- <category name="Keep">무엇이 되었나? 계속해야 할 것은?</category>
40
- <category name="Problem">무엇이 문제였나? 장애물은?</category>
41
- <category name="Try">다음에 시도해볼 것은?</category>
42
- </kpt-framework>
43
-
44
- <pattern-classification>
45
- <failure-pattern id="FP-XXX">
46
- <criteria>3회 이상 반복, 작업 지연 유발, 품질 저하 원인</criteria>
47
- </failure-pattern>
48
- <success-pattern id="SP-XXX">
49
- <criteria>효과 검증됨, 효율성 향상, 품질 향상</criteria>
50
- </success-pattern>
51
- </pattern-classification>
52
-
53
- <metrics>
54
- | 메트릭 | 계산 방법 |
55
- |-------|----------|
56
- | 작업 수 | 완료된 작업 개수 |
57
- | 성공률 | (성공 작업 / 전체 작업) x 100 |
58
- | 평균 수정 횟수 | 총 수정 횟수 / 작업 수 |
59
- | 점수 | 가중 평균 (성공률 x 0.4 + (1 - 수정률) x 0.3 + 기타 x 0.3) |
60
- </metrics>
61
-
62
- <improvement-format>
63
- <![CDATA[
64
- ## IMP-XXX: {개선 제목}
65
-
66
- **대상**: {에이전트/스킬}.md
67
- **관련 패턴**: FP-XXX / SP-XXX
68
-
69
- ### 현재 문제
70
- {문제 설명}
71
-
72
- ### 제안 변경
73
- ```diff
74
- - 현재 내용
75
- + 개선된 내용
76
- ```
77
-
78
- ### 기대 효과
79
- {개선 효과}
80
- ]]>
81
- </improvement-format>
82
-
83
- <report-sections>
84
- 1. 메트릭 요약
85
- 2. 에이전트별 성과
86
- 3. 피드백 분석
87
- 4. 발견된 패턴
88
- 5. 개선 조치
89
- 6. 다음 사이클 목표
90
- </report-sections>
91
-
92
- <principles>
93
- <principle>객관적 데이터 우선 - 주관적 평가보다 수치 기반</principle>
94
- <principle>구체적 예시 - 추상적 서술 지양</principle>
95
- <principle>실행 가능한 개선안 - "더 잘하자" 대신 구체적 액션</principle>
96
- <principle>균형 잡힌 시각 - 문제점만이 아닌 성공 사례도 포함</principle>
97
- </principles>
98
-
99
- <apply-process>
100
- 제안된 개선 → 사용자 검토/승인 → SKILL.md 업데이트 → 템플릿 업데이트 → lessons.md 기록 → 다음 사이클에서 효과 측정
101
- </apply-process>
102
- </skill>
12
+ # Retrospective
13
+
14
+ 프로젝트 회고를 위한 분석 프레임워크와 개선 프로세스.
15
+
16
+ ## TSQ CLI 사용
17
+
18
+ 로그, 피드백, 메트릭, 회고는 CLI 커맨드를 사용한다.
19
+ 직접 파일을 조작하면 구조화된 데이터가 깨질 수 있다.
20
+
21
+ | 시점 | 커맨드 |
22
+ |-----|--------|
23
+ | 회고 시작 | `tsq retro start` |
24
+ | Phase별 회고 | `tsq retro phase {phase}` |
25
+ | 메트릭 수집 | `tsq retro collect` 또는 `tsq metrics collect` |
26
+ | 로그 확인 | `tsq log list` / `tsq log today` |
27
+ | 리포트 생성 | `tsq retro report` (GitHub Issue 포함) |
28
+ | 로컬 리포트만 | `tsq retro report --local` |
29
+ | 사이클 완료 | `tsq retro apply` |
30
+
31
+ ## 데이터 소스
32
+
33
+ | 경로 | 내용 |
34
+ |------|------|
35
+ | `.timsquad/retrospective/metrics/` | 메트릭 데이터 |
36
+ | `.timsquad/logs/` | 작업 로그 |
37
+ | `.timsquad/retrospective/patterns/` | 기존 패턴 |
38
+
39
+ ## KPT 프레임워크
40
+
41
+ - **Keep**: 무엇이 잘 되었나? 계속해야 할 것은?
42
+ - **Problem**: 무엇이 문제였나? 장애물은?
43
+ - **Try**: 다음에 시도해볼 것은?
44
+
45
+ ## 패턴 분류
46
+
47
+ - **실패 패턴 (FP)**: 3회 이상 반복, 작업 지연 유발, 품질 저하 원인
48
+ - **성공 패턴 (SP)**: 효과 검증됨, 효율성 향상, 품질 향상
49
+
50
+ ## 메트릭
51
+
52
+ | 메트릭 | 계산 방법 |
53
+ |-------|----------|
54
+ | 작업 수 | 완료된 작업 개수 |
55
+ | 성공률 | (성공 작업 / 전체 작업) x 100 |
56
+ | 평균 수정 횟수 | 총 수정 횟수 / 작업 수 |
57
+
58
+ ## 리포트 구성
59
+
60
+ 1. 메트릭 요약
61
+ 2. 에이전트별 성과
62
+ 3. 피드백 분석
63
+ 4. 발견된 패턴
64
+ 5. 개선 조치
65
+ 6. 다음 사이클 목표
66
+
67
+ ## 원칙
68
+
69
+ - **객관적 데이터 우선** — 주관적 평가보다 수치 기반. 데이터가 있어야 개선 효과를 측정할 수 있다.
70
+ - **구체적 예시** 추상적 서술 지양. "더 잘하자"가 아닌 실행 가능한 액션.
71
+ - **균형 잡힌 시각** — 문제점만이 아닌 성공 사례도 포함.
72
+
73
+ ## 개선 적용 흐름
74
+
75
+ 제안된 개선 → 사용자 검토/승인 → SKILL.md 업데이트 → 템플릿 업데이트 → lessons.md 기록 → 다음 사이클에서 효과 측정
76
+
77
+ 개선 제안 형식은 `references/improvement-template.md` 참조.
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: Improvement Template
3
+ category: template
4
+ source: internal
5
+ ---
6
+
7
+ # Improvement Template
8
+
9
+ 개선 제안 시 아래 형식을 사용한다.
10
+
11
+ ## IMP-XXX: {개선 제목}
12
+
13
+ **대상**: {에이전트/스킬}.md
14
+ **관련 패턴**: FP-XXX / SP-XXX
15
+
16
+ ### 현재 문제
17
+ {문제 설명}
18
+
19
+ ### 제안 변경
20
+ ```diff
21
+ - 현재 내용
22
+ + 개선된 내용
23
+ ```
24
+
25
+ ### 기대 효과
26
+ {개선 효과}
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: review
3
+ description: |
4
+ 교차 리뷰(Cross-Review) 스킬. 별도 서브에이전트(Task)로 코드 리뷰를 수행하여
5
+ 구조화된 리포트를 반환한다. 6가지 관점(보안, 타입, 에러, API, 테스트, 성능)으로 분석.
6
+ `/review`로 호출하면 현재 변경 사항에 대한 교차 리뷰를 실행한다.
7
+ version: "1.0.0"
8
+ tags: [review, code-review, cross-review, quality]
9
+ depends_on: [coding, testing, security]
10
+ conflicts_with: []
11
+ user-invocable: true
12
+ context: fork
13
+ agent: Explore
14
+ allowed-tools: Read, Grep, Glob, Bash
15
+ argument-hint: "[파일패턴] — 변경 사항 교차 리뷰"
16
+ ---
17
+
18
+ # Cross-Review
19
+
20
+ 별도 서브에이전트로 교차 리뷰를 수행하여 자기검증의 맹점을 보완한다.
21
+
22
+ ## Contract
23
+
24
+ - **Trigger**: `/review` 명시적 호출 시에만 실행 (자동 실행 아님)
25
+ - **Input**: `git diff` 변경 내용 또는 staged changes
26
+ - **Output**: severity별 구조화된 리뷰 리포트 (파일:라인 참조 포함)
27
+ - **Error**: 리뷰 대상 없음 시 "변경 사항 없음" 안내
28
+ - **Dependencies**: coding, testing, security
29
+
30
+ ## Protocol
31
+
32
+ 1. **변경 수집**: `git diff` 또는 staged changes로 리뷰 대상 수집
33
+ 2. **격리 실행**: 별도 컨텍스트에서 리뷰 수행 (context: fork)
34
+ - 리뷰어는 구현자와 독립된 컨텍스트에서 판단
35
+ - 6가지 관점 체크리스트 기반 분석
36
+ 3. **6가지 관점 분석**:
37
+ - **보안**: OWASP Top 10, 시크릿 노출, injection, XSS
38
+ - **타입 안전성**: any 타입, 타입 단언(as), 미검증 캐스팅
39
+ - **에러 핸들링**: catch 누락, 에러 무시, 불완전한 에러 처리
40
+ - **API 호환성**: 기존 인터페이스 변경, breaking changes
41
+ - **테스트 커버리지**: 변경 코드의 테스트 존재 여부
42
+ - **성능**: N+1 쿼리, 불필요한 리렌더링, 메모리 누수
43
+ 4. **리포트 생성**: severity별 구조화된 결과 출력
44
+
45
+ ## Verification
46
+
47
+ | Check | Method | Pass Criteria |
48
+ |-------|--------|---------------|
49
+ | 리뷰 실행 | 격리 컨텍스트 (fork) | 리포트 반환 |
50
+ | 관점 커버리지 | 6가지 관점 체크 | 모든 관점 포함 |
51
+ | severity 분류 | 구조화 리포트 | severity 태그 존재 |
52
+ | 파일/라인 참조 | 코드 위치 명시 | 정확한 위치 참조 |
53
+
54
+ ## Quick Rules
55
+
56
+ ### Report Format
57
+ ```
58
+ ## Review Report
59
+ ### CRITICAL (즉시 수정)
60
+ - [CRITICAL] src/auth.ts:42 — SQL injection 가능성
61
+ ### HIGH (머지 전 수정)
62
+ - [HIGH] src/api.ts:15 — 에러 핸들링 누락
63
+ ### MEDIUM (개선 권장)
64
+ - [MEDIUM] src/utils.ts:8 — any 타입 사용
65
+ ### LOW (참고)
66
+ - [LOW] src/config.ts:3 — 매직넘버 사용
67
+ ```
68
+
69
+ ### 원칙
70
+ - `/review` 명시 호출만 실행 (토큰 절약)
71
+ - critical 발견 시 즉시 알림
72
+ - 리뷰어는 구현자와 다른 컨텍스트(fork)에서 수행
@@ -1,55 +1,68 @@
1
1
  ---
2
2
  name: security
3
- description: 보안 검토 및 취약점 탐지 가이드라인
3
+ description: |
4
+ 보안 검토 및 취약점 탐지 가이드라인.
5
+ OWASP Top 10, 시크릿 관리, Rate Limiting, CSRF 방지를 다룸.
6
+ Use when: "보안 검토, 취약점, OWASP, XSS, injection, 시크릿, 인증"
4
7
  version: "1.0.0"
5
8
  tags: [security, owasp, vulnerability]
9
+ depends_on: []
10
+ conflicts_with: []
6
11
  user-invocable: false
7
12
  ---
8
13
 
9
14
  # Security Guidelines (OWASP Top 10)
10
15
 
11
- ## OWASP Top 10 요약
16
+ 보안 취약점을 사전에 방지하고 체계적으로 검토한다.
12
17
 
13
- | # | 취약점 | 핵심 방어 |
14
- |---|--------|----------|
15
- | 1 | Injection | Parameterized Query, ORM 사용 |
16
- | 2 | Broken Authentication | 강력한 패스워드 정책, bcrypt(12+) |
17
- | 3 | Sensitive Data Exposure | DTO로 민감 정보 제외, 로그 마스킹 |
18
- | 5 | Broken Access Control | authenticate + authorize 미들웨어 |
19
- | 6 | Security Misconfiguration | helmet(), CORS 제한 |
20
- | 7 | XSS | textContent 사용, innerHTML 금지 |
21
- | 8 | Insecure Deserialization | Zod 스키마 검증 |
22
- | 9 | Known Vulnerabilities | npm audit, 정기 업데이트 |
23
- | 10 | Insufficient Logging | 로그인 실패, 브루트포스 로깅 |
18
+ ## Philosophy
24
19
 
25
- ## 추가 보안 체크
20
+ - 모든 외부 입력은 검증한다 (Trust Nothing)
21
+ - 시크릿은 코드에 절대 포함하지 않는다
22
+ - 보안은 사후 점검이 아닌 설계 단계부터 고려한다
26
23
 
27
- ### 시크릿 관리
28
- - **금지**: 하드코딩 (`const apiKey = 'sk-...'`)
29
- - **필수**: 환경변수 (`process.env.API_KEY`)
30
- - **권장**: 시크릿 매니저
31
-
32
- ### Rate Limiting
33
- - API 엔드포인트에 rate limiter 적용
34
-
35
- ### CSRF 방지
36
- - csrf 토큰 사용
37
-
38
- ## Checklist
39
- - [ ] SQL/NoSQL Injection 방지
40
- - [ ] 강력한 인증 구현
41
- - [ ] 민감 정보 보호
42
- - [ ] 접근 제어 구현
43
- - [ ] XSS 방지
44
- - [ ] 입력 검증 (Zod)
45
- - [ ] 의존성 취약점 확인
46
- - [ ] 보안 로깅 구현
47
- - [ ] 시크릿 안전하게 관리
48
- - [ ] Rate Limiting 적용
24
+ ## Contract
25
+
26
+ - **Trigger**: 보안 관련 코드 변경 (인증, 권한, 입력 처리, API)
27
+ - **Input**: 변경 코드 + 보안 컨텍스트
28
+ - **Output**: OWASP 준수 코드 + 시크릿 미노출
29
+ - **Error**: 취약점 발견 시 즉시 수정 + 보안 로그
30
+ - **Dependencies**: 없음
31
+
32
+ ## Protocol
33
+
34
+ 1. **위협 모델링**: 공격 표면 식별
35
+ 2. **구현**: OWASP 가이드 준수 코딩
36
+ 3. **OWASP 체크**: Top 10 항목별 검증
37
+ 4. **시크릿 스캔**: 하드코딩 시크릿 탐색
38
+
39
+ ## Verification
40
+
41
+ | Check | Command | Pass Criteria |
42
+ |-------|---------|---------------|
43
+ | 스크립트 | `shellcheck *.sh` | exit code 0 |
44
+ | 의존성 취약점 | `npm audit` | critical 0건 |
45
+ | 시크릿 스캔 | `bash scripts/check-secrets.sh` | 0건 |
46
+ | 입력 검증 | 수동 검증 | 모든 외부 입력 Zod 검증 |
49
47
 
50
48
  ## Resources
51
49
 
52
50
  | Priority | Type | Resource | Description |
53
51
  |----------|------|----------|-------------|
54
52
  | CRITICAL | rule | [owasp-examples](rules/owasp-examples.md) | 취약점별 Bad/Good 코드 예시 |
55
- | HIGH | script | [check-secrets](scripts/check-secrets.sh) | 하드코딩된 시크릿 자동 스캔 |
53
+ | HIGH | script | [check-secrets](scripts/check-secrets.sh) | 하드코딩 시크릿 자동 스캔 |
54
+
55
+ ## Quick Rules
56
+
57
+ ### OWASP Top 10 핵심
58
+ | # | 취약점 | 방어 |
59
+ |---|--------|------|
60
+ | 1 | Injection | Parameterized Query, ORM |
61
+ | 2 | Broken Auth | bcrypt(12+), 강력한 패스워드 |
62
+ | 3 | Data Exposure | DTO로 민감 정보 제외 |
63
+ | 5 | Access Control | authenticate + authorize |
64
+ | 7 | XSS | textContent, innerHTML 금지 |
65
+
66
+ ### 시크릿 관리
67
+ - **금지**: 하드코딩 (`const apiKey = 'sk-...'`)
68
+ - **필수**: 환경변수 (`process.env.API_KEY`)
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: Authentication Patterns
3
+ impact: CRITICAL
4
+ tags: security, authentication, jwt, session, password, mfa
5
+ ---
6
+
7
+ # Authentication Patterns
8
+
9
+ ## Password Hashing
10
+ ```typescript
11
+ // Bad: plain text or weak hashing
12
+ const hash = md5(password);
13
+
14
+ // Good: bcrypt with sufficient rounds
15
+ import bcrypt from 'bcrypt';
16
+ const SALT_ROUNDS = 12;
17
+ const hash = await bcrypt.hash(password, SALT_ROUNDS);
18
+ const isValid = await bcrypt.compare(password, hash);
19
+ ```
20
+
21
+ ## JWT Best Practices
22
+ ```typescript
23
+ // Sign with short expiry and explicit algorithm
24
+ const token = jwt.sign({ sub: user.id, role: user.role }, SECRET, {
25
+ algorithm: 'HS256',
26
+ expiresIn: '15m',
27
+ });
28
+
29
+ // Verify with algorithm restriction
30
+ const payload = jwt.verify(token, SECRET, { algorithms: ['HS256'] });
31
+ ```
32
+
33
+ - Use short-lived access tokens (15m) + long-lived refresh tokens (7d)
34
+ - Store refresh tokens server-side; revoke on logout
35
+ - Never store sensitive data (password, PII) in JWT payload
36
+ - Rotate signing keys periodically
37
+
38
+ ## Session Management
39
+ - Regenerate session ID after login to prevent fixation
40
+ - Set secure cookie flags: `httpOnly`, `secure`, `sameSite: 'strict'`
41
+ - Enforce idle and absolute timeout
42
+ ```typescript
43
+ app.use(session({
44
+ secret: process.env.SESSION_SECRET,
45
+ resave: false,
46
+ saveUninitialized: false,
47
+ cookie: { httpOnly: true, secure: true, sameSite: 'strict', maxAge: 3600000 },
48
+ }));
49
+ ```
50
+
51
+ ## Multi-Factor Authentication (MFA)
52
+ - Offer TOTP (e.g., Google Authenticator) as a second factor
53
+ - Provide recovery codes at enrollment; hash them before storage
54
+ - Rate-limit MFA verification attempts to prevent brute force
55
+
56
+ ## Checklist
57
+ - Hash passwords with bcrypt (rounds >= 12) or argon2
58
+ - Enforce minimum password length of 12 characters
59
+ - Lock accounts or add delays after repeated failed attempts
60
+ - Use short-lived JWTs with explicit algorithm; never use `alg: none`
61
+ - Regenerate session IDs on privilege changes
62
+ - Implement MFA for admin and sensitive operations