@uzysjung/agent-harness 26.83.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 (212) hide show
  1. package/LICENSE +21 -0
  2. package/README.ko.md +279 -0
  3. package/README.md +306 -0
  4. package/dist/chunk-SDVAM5JZ.js +775 -0
  5. package/dist/chunk-SDVAM5JZ.js.map +1 -0
  6. package/dist/index.js +5412 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/trust-tier-drift.js +67 -0
  9. package/dist/trust-tier-drift.js.map +1 -0
  10. package/package.json +53 -0
  11. package/scripts/prune-ecc.sh +310 -0
  12. package/templates/CLAUDE.md +86 -0
  13. package/templates/agents/build-error-resolver.md +114 -0
  14. package/templates/agents/code-reviewer.md +237 -0
  15. package/templates/agents/data-analyst.md +69 -0
  16. package/templates/agents/plan-checker.md +118 -0
  17. package/templates/agents/reviewer.md +128 -0
  18. package/templates/agents/security-reviewer.md +108 -0
  19. package/templates/agents/silent-failure-hunter.md +50 -0
  20. package/templates/agents/strategist.md +86 -0
  21. package/templates/antigravity/AGENTS.md.template +58 -0
  22. package/templates/codex/AGENTS.md.template +94 -0
  23. package/templates/codex/README.md +69 -0
  24. package/templates/codex/config.toml.template +108 -0
  25. package/templates/codex/hooks/README.md +40 -0
  26. package/templates/codex/hooks/gate-check.sh +7 -0
  27. package/templates/codex/hooks/hito-counter.sh +7 -0
  28. package/templates/codex/hooks/session-start.sh +7 -0
  29. package/templates/codex/hooks/uncommitted-check.sh +7 -0
  30. package/templates/codex/skills/uzys-build/SKILL.md +24 -0
  31. package/templates/codex/skills/uzys-plan/SKILL.md +24 -0
  32. package/templates/codex/skills/uzys-review/SKILL.md +24 -0
  33. package/templates/codex/skills/uzys-ship/SKILL.md +24 -0
  34. package/templates/codex/skills/uzys-spec/SKILL.md +28 -0
  35. package/templates/codex/skills/uzys-test/SKILL.md +24 -0
  36. package/templates/commands/ecc/checkpoint.md +32 -0
  37. package/templates/commands/ecc/e2e.md +105 -0
  38. package/templates/commands/ecc/eval.md +88 -0
  39. package/templates/commands/ecc/evolve.md +7 -0
  40. package/templates/commands/ecc/harness-audit.md +73 -0
  41. package/templates/commands/ecc/instinct-status.md +8 -0
  42. package/templates/commands/ecc/promote.md +10 -0
  43. package/templates/commands/ecc/security-scan.md +10 -0
  44. package/templates/commands/uzys/auto.md +190 -0
  45. package/templates/commands/uzys/build.md +42 -0
  46. package/templates/commands/uzys/plan.md +55 -0
  47. package/templates/commands/uzys/review.md +44 -0
  48. package/templates/commands/uzys/ship.md +49 -0
  49. package/templates/commands/uzys/spec.md +93 -0
  50. package/templates/commands/uzys/test.md +58 -0
  51. package/templates/docs/PLAN.template.md +102 -0
  52. package/templates/hooks/agentshield-gate.sh +101 -0
  53. package/templates/hooks/checkpoint-snapshot.sh +115 -0
  54. package/templates/hooks/gate-check.sh +138 -0
  55. package/templates/hooks/hito-counter.sh +26 -0
  56. package/templates/hooks/karpathy-gate.sh +59 -0
  57. package/templates/hooks/mcp-pre-exec.sh +104 -0
  58. package/templates/hooks/protect-files.sh +41 -0
  59. package/templates/hooks/session-start.sh +40 -0
  60. package/templates/hooks/spec-drift-check.sh +86 -0
  61. package/templates/mcp-allowlist.example +24 -0
  62. package/templates/mcp.json +20 -0
  63. package/templates/opencode/.opencode/commands/uzys-build.md +22 -0
  64. package/templates/opencode/.opencode/commands/uzys-plan.md +22 -0
  65. package/templates/opencode/.opencode/commands/uzys-review.md +22 -0
  66. package/templates/opencode/.opencode/commands/uzys-ship.md +22 -0
  67. package/templates/opencode/.opencode/commands/uzys-spec.md +28 -0
  68. package/templates/opencode/.opencode/commands/uzys-test.md +22 -0
  69. package/templates/opencode/.opencode/plugins/uzys-harness.ts +146 -0
  70. package/templates/opencode/AGENTS.md.template +98 -0
  71. package/templates/opencode/README.md +34 -0
  72. package/templates/opencode/opencode.json.template +42 -0
  73. package/templates/project-claude/_base.md +23 -0
  74. package/templates/project-claude/fragments/csr-fastapi/active-rules.md +13 -0
  75. package/templates/project-claude/fragments/csr-fastapi/agents.md +5 -0
  76. package/templates/project-claude/fragments/csr-fastapi/boundaries.md +18 -0
  77. package/templates/project-claude/fragments/csr-fastapi/commands.md +6 -0
  78. package/templates/project-claude/fragments/csr-fastapi/plugins.md +2 -0
  79. package/templates/project-claude/fragments/csr-fastapi/skills.md +5 -0
  80. package/templates/project-claude/fragments/csr-fastapi/stack.md +6 -0
  81. package/templates/project-claude/fragments/csr-fastapi/tagline.md +1 -0
  82. package/templates/project-claude/fragments/csr-fastapi/workflow.md +8 -0
  83. package/templates/project-claude/fragments/csr-fastify/active-rules.md +13 -0
  84. package/templates/project-claude/fragments/csr-fastify/agents.md +5 -0
  85. package/templates/project-claude/fragments/csr-fastify/boundaries.md +18 -0
  86. package/templates/project-claude/fragments/csr-fastify/commands.md +6 -0
  87. package/templates/project-claude/fragments/csr-fastify/plugins.md +2 -0
  88. package/templates/project-claude/fragments/csr-fastify/skills.md +5 -0
  89. package/templates/project-claude/fragments/csr-fastify/stack.md +6 -0
  90. package/templates/project-claude/fragments/csr-fastify/tagline.md +1 -0
  91. package/templates/project-claude/fragments/csr-fastify/workflow.md +8 -0
  92. package/templates/project-claude/fragments/csr-supabase/active-rules.md +12 -0
  93. package/templates/project-claude/fragments/csr-supabase/agents.md +5 -0
  94. package/templates/project-claude/fragments/csr-supabase/boundaries.md +19 -0
  95. package/templates/project-claude/fragments/csr-supabase/commands.md +6 -0
  96. package/templates/project-claude/fragments/csr-supabase/plugins.md +4 -0
  97. package/templates/project-claude/fragments/csr-supabase/skills.md +7 -0
  98. package/templates/project-claude/fragments/csr-supabase/stack.md +6 -0
  99. package/templates/project-claude/fragments/csr-supabase/supabase-auth.md +21 -0
  100. package/templates/project-claude/fragments/csr-supabase/tagline.md +1 -0
  101. package/templates/project-claude/fragments/csr-supabase/workflow.md +8 -0
  102. package/templates/project-claude/fragments/data/active-rules.md +10 -0
  103. package/templates/project-claude/fragments/data/agents.md +6 -0
  104. package/templates/project-claude/fragments/data/boundaries.md +20 -0
  105. package/templates/project-claude/fragments/data/commands.md +6 -0
  106. package/templates/project-claude/fragments/data/plugins.md +2 -0
  107. package/templates/project-claude/fragments/data/skills.md +3 -0
  108. package/templates/project-claude/fragments/data/stack.md +7 -0
  109. package/templates/project-claude/fragments/data/tagline.md +1 -0
  110. package/templates/project-claude/fragments/data/workflow.md +9 -0
  111. package/templates/project-claude/fragments/executive/active-rules.md +6 -0
  112. package/templates/project-claude/fragments/executive/agents.md +6 -0
  113. package/templates/project-claude/fragments/executive/boundaries.md +17 -0
  114. package/templates/project-claude/fragments/executive/commands.md +11 -0
  115. package/templates/project-claude/fragments/executive/plugins.md +1 -0
  116. package/templates/project-claude/fragments/executive/skills.md +7 -0
  117. package/templates/project-claude/fragments/executive/stack.md +4 -0
  118. package/templates/project-claude/fragments/executive/tagline.md +1 -0
  119. package/templates/project-claude/fragments/executive/workflow.md +10 -0
  120. package/templates/project-claude/fragments/growth-marketing/active-rules.md +7 -0
  121. package/templates/project-claude/fragments/growth-marketing/agents.md +6 -0
  122. package/templates/project-claude/fragments/growth-marketing/boundaries.md +17 -0
  123. package/templates/project-claude/fragments/growth-marketing/commands.md +11 -0
  124. package/templates/project-claude/fragments/growth-marketing/plugins.md +9 -0
  125. package/templates/project-claude/fragments/growth-marketing/skills.md +8 -0
  126. package/templates/project-claude/fragments/growth-marketing/stack.md +7 -0
  127. package/templates/project-claude/fragments/growth-marketing/tagline.md +1 -0
  128. package/templates/project-claude/fragments/growth-marketing/workflow.md +11 -0
  129. package/templates/project-claude/fragments/project-management/active-rules.md +7 -0
  130. package/templates/project-claude/fragments/project-management/agents.md +6 -0
  131. package/templates/project-claude/fragments/project-management/boundaries.md +16 -0
  132. package/templates/project-claude/fragments/project-management/commands.md +10 -0
  133. package/templates/project-claude/fragments/project-management/plugins.md +6 -0
  134. package/templates/project-claude/fragments/project-management/skills.md +5 -0
  135. package/templates/project-claude/fragments/project-management/stack.md +4 -0
  136. package/templates/project-claude/fragments/project-management/tagline.md +1 -0
  137. package/templates/project-claude/fragments/project-management/workflow.md +12 -0
  138. package/templates/project-claude/fragments/ssr-htmx/active-rules.md +11 -0
  139. package/templates/project-claude/fragments/ssr-htmx/agents.md +5 -0
  140. package/templates/project-claude/fragments/ssr-htmx/boundaries.md +20 -0
  141. package/templates/project-claude/fragments/ssr-htmx/commands.md +6 -0
  142. package/templates/project-claude/fragments/ssr-htmx/plugins.md +2 -0
  143. package/templates/project-claude/fragments/ssr-htmx/skills.md +3 -0
  144. package/templates/project-claude/fragments/ssr-htmx/stack.md +6 -0
  145. package/templates/project-claude/fragments/ssr-htmx/tagline.md +1 -0
  146. package/templates/project-claude/fragments/ssr-htmx/workflow.md +8 -0
  147. package/templates/project-claude/fragments/ssr-nextjs/active-rules.md +12 -0
  148. package/templates/project-claude/fragments/ssr-nextjs/agents.md +5 -0
  149. package/templates/project-claude/fragments/ssr-nextjs/boundaries.md +20 -0
  150. package/templates/project-claude/fragments/ssr-nextjs/commands.md +6 -0
  151. package/templates/project-claude/fragments/ssr-nextjs/plugins.md +2 -0
  152. package/templates/project-claude/fragments/ssr-nextjs/skills.md +5 -0
  153. package/templates/project-claude/fragments/ssr-nextjs/stack.md +5 -0
  154. package/templates/project-claude/fragments/ssr-nextjs/tagline.md +1 -0
  155. package/templates/project-claude/fragments/ssr-nextjs/workflow.md +8 -0
  156. package/templates/project-claude/fragments/tooling/active-rules.md +11 -0
  157. package/templates/project-claude/fragments/tooling/agents.md +5 -0
  158. package/templates/project-claude/fragments/tooling/boundaries.md +17 -0
  159. package/templates/project-claude/fragments/tooling/commands.md +4 -0
  160. package/templates/project-claude/fragments/tooling/skills.md +4 -0
  161. package/templates/project-claude/fragments/tooling/stack.md +5 -0
  162. package/templates/project-claude/fragments/tooling/tagline.md +1 -0
  163. package/templates/project-claude/fragments/tooling/workflow.md +5 -0
  164. package/templates/rules/api-contract.md +33 -0
  165. package/templates/rules/change-management.md +80 -0
  166. package/templates/rules/cli-development.md +39 -0
  167. package/templates/rules/code-style.md +23 -0
  168. package/templates/rules/data-analysis.md +61 -0
  169. package/templates/rules/database.md +29 -0
  170. package/templates/rules/design-workflow.md +17 -0
  171. package/templates/rules/error-handling.md +23 -0
  172. package/templates/rules/gates-taxonomy.md +21 -0
  173. package/templates/rules/git-policy.md +102 -0
  174. package/templates/rules/htmx.md +42 -0
  175. package/templates/rules/nextjs.md +35 -0
  176. package/templates/rules/playwright-launch.md +66 -0
  177. package/templates/rules/pyside6.md +59 -0
  178. package/templates/rules/shadcn.md +33 -0
  179. package/templates/rules/ship-checklist.md +24 -0
  180. package/templates/rules/tauri.md +40 -0
  181. package/templates/rules/test-policy.md +62 -0
  182. package/templates/settings.json +71 -0
  183. package/templates/skills/agent-introspection-debugging/SKILL.md +153 -0
  184. package/templates/skills/continuous-learning-v2/SKILL.md +365 -0
  185. package/templates/skills/continuous-learning-v2/config.json +8 -0
  186. package/templates/skills/continuous-learning-v2/hooks/observe.sh +428 -0
  187. package/templates/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
  188. package/templates/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
  189. package/templates/skills/deep-research/SKILL.md +155 -0
  190. package/templates/skills/deep-research/agents/openai.yaml +7 -0
  191. package/templates/skills/e2e-testing/SKILL.md +326 -0
  192. package/templates/skills/e2e-testing/agents/openai.yaml +7 -0
  193. package/templates/skills/eval-harness/SKILL.md +279 -0
  194. package/templates/skills/eval-harness/agents/openai.yaml +7 -0
  195. package/templates/skills/gh-issue-workflow/ISSUE.template.md +58 -0
  196. package/templates/skills/gh-issue-workflow/SKILL.md +184 -0
  197. package/templates/skills/investor-materials/SKILL.md +96 -0
  198. package/templates/skills/investor-outreach/SKILL.md +91 -0
  199. package/templates/skills/market-research/SKILL.md +75 -0
  200. package/templates/skills/market-research/agents/openai.yaml +7 -0
  201. package/templates/skills/nextjs-turbopack/SKILL.md +44 -0
  202. package/templates/skills/north-star/NORTH_STAR.template.md +114 -0
  203. package/templates/skills/north-star/SKILL.md +103 -0
  204. package/templates/skills/python-patterns/SKILL.md +750 -0
  205. package/templates/skills/python-testing/SKILL.md +816 -0
  206. package/templates/skills/spec-scaling/SKILL.md +89 -0
  207. package/templates/skills/strategic-compact/SKILL.md +131 -0
  208. package/templates/skills/strategic-compact/suggest-compact.sh +54 -0
  209. package/templates/skills/ui-visual-review/SKILL.md +154 -0
  210. package/templates/skills/verification-loop/SKILL.md +126 -0
  211. package/templates/skills/verification-loop/agents/openai.yaml +7 -0
  212. package/templates/track-mcp-map.tsv +15 -0
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: uzys-test
3
+ description: "Verify phase — TDD 워크플로우와 Track별 커버리지 게이트를 실행한다. Codex 포팅 (원본: .claude/commands/uzys/test.md)"
4
+ ---
5
+
6
+ # /uzys-test — test Phase (Codex)
7
+
8
+ > **Generated from**: `.claude/commands/uzys/test.md` via `scripts/claude-to-codex.sh` (Phase C)
9
+ > **Slash**: `/uzys-test`
10
+
11
+ ## Pre-flight
12
+
13
+ 이 skill 호출 전 확인:
14
+ - 직전 phase 완료 체크: `docs/todo.md`에서 이전 Phase 체크박스 확인
15
+ - `pre_tool_use` hook이 Skill matcher로 순서 강제 (Codex hook 시스템, ADR-002 v2)
16
+ - 직전 phase 미완료 시 exit 2로 차단됨
17
+
18
+ ## Goal
19
+
20
+ {SKILL_BODY_PLACEHOLDER}
21
+
22
+ ---
23
+
24
+ *Phase C에서 본 SKILL.md 본문이 `.claude/commands/uzys/test.md`로부터 포팅됨.*
@@ -0,0 +1,32 @@
1
+ 현재 진행 상태의 스냅샷을 생성한다. 게이트 간 savepoint로 활용.
2
+
3
+ ## Process
4
+
5
+ 아래 항목을 확인하고 체크포인트를 기록한다:
6
+
7
+ 1. **테스트 상태** — 전체/통과/실패 수, 커버리지
8
+ 2. **빌드 상태** — 성공 또는 에러
9
+ 3. **코드 변경** — `git diff --stat` 요약
10
+ 4. **완료된 작업** — 체크리스트
11
+ 5. **차단 이슈** — 있으면 기술
12
+ 6. **다음 단계** — 남은 작업
13
+
14
+ ## Output Format
15
+
16
+ ```markdown
17
+ ### Checkpoint: [YYYY-MM-DD HH:MM]
18
+
19
+ **Tests**: Total X, Pass Y, Fail Z, Coverage XX%
20
+ **Build**: PASS / FAIL
21
+ **Changes since last checkpoint**: `git diff --stat`
22
+ **Completed**: [x] Task 1, [x] Task 2, [ ] Task 3 (진행 중)
23
+ **Blockers**: [있으면 기술]
24
+ **Next**: 1. Step 1, 2. Step 2
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ - 주요 변경 전 savepoint로
30
+ - Phase 전환 시 진행 상태 기록
31
+ - 롤백 결정 시 참조점
32
+ - `git commit -m "chore: checkpoint [설명]"` 과 함께 사용
@@ -0,0 +1,105 @@
1
+ ---
2
+ description: Generate and run E2E tests with Playwright
3
+ agent: everything-claude-code:e2e-runner
4
+ subtask: true
5
+ ---
6
+
7
+ # E2E Command
8
+
9
+ Generate and run end-to-end tests using Playwright: $ARGUMENTS
10
+
11
+ ## Your Task
12
+
13
+ 1. **Analyze user flow** to test
14
+ 2. **Create test journey** with Playwright
15
+ 3. **Run tests** and capture artifacts
16
+ 4. **Report results** with screenshots/videos
17
+
18
+ ## Test Structure
19
+
20
+ ```typescript
21
+ import { test, expect } from '@playwright/test'
22
+
23
+ test.describe('Feature: [Name]', () => {
24
+ test.beforeEach(async ({ page }) => {
25
+ // Setup: Navigate, authenticate, prepare state
26
+ })
27
+
28
+ test('should [expected behavior]', async ({ page }) => {
29
+ // Arrange: Set up test data
30
+
31
+ // Act: Perform user actions
32
+ await page.click('[data-testid="button"]')
33
+ await page.fill('[data-testid="input"]', 'value')
34
+
35
+ // Assert: Verify results
36
+ await expect(page.locator('[data-testid="result"]')).toBeVisible()
37
+ })
38
+
39
+ test.afterEach(async ({ page }, testInfo) => {
40
+ // Capture screenshot on failure
41
+ if (testInfo.status !== 'passed') {
42
+ await page.screenshot({ path: `test-results/${testInfo.title}.png` })
43
+ }
44
+ })
45
+ })
46
+ ```
47
+
48
+ ## Best Practices
49
+
50
+ ### Selectors
51
+ - Prefer `data-testid` attributes
52
+ - Avoid CSS classes (they change)
53
+ - Use semantic selectors (roles, labels)
54
+
55
+ ### Waits
56
+ - Use Playwright's auto-waiting
57
+ - Avoid `page.waitForTimeout()`
58
+ - Use `expect().toBeVisible()` for assertions
59
+
60
+ ### Test Isolation
61
+ - Each test should be independent
62
+ - Clean up test data after
63
+ - Don't rely on test order
64
+
65
+ ## Artifacts to Capture
66
+
67
+ - Screenshots on failure
68
+ - Videos for debugging
69
+ - Trace files for detailed analysis
70
+ - Network logs if relevant
71
+
72
+ ## Test Categories
73
+
74
+ 1. **Critical User Flows**
75
+ - Authentication (login, logout, signup)
76
+ - Core feature happy paths
77
+ - Payment/checkout flows
78
+
79
+ 2. **Edge Cases**
80
+ - Network failures
81
+ - Invalid inputs
82
+ - Session expiry
83
+
84
+ 3. **Cross-Browser**
85
+ - Chrome, Firefox, Safari
86
+ - Mobile viewports
87
+
88
+ ## Report Format
89
+
90
+ ```
91
+ E2E Test Results
92
+ ================
93
+ PASS: Passed: X
94
+ FAIL: Failed: Y
95
+ SKIPPED: Skipped: Z
96
+
97
+ Failed Tests:
98
+ - test-name: Error message
99
+ Screenshot: path/to/screenshot.png
100
+ Video: path/to/video.webm
101
+ ```
102
+
103
+ ---
104
+
105
+ **TIP**: Run with `--headed` flag for debugging: `npx playwright test --headed`
@@ -0,0 +1,88 @@
1
+ ---
2
+ description: Run evaluation against acceptance criteria
3
+ agent: everything-claude-code:build
4
+ ---
5
+
6
+ # Eval Command
7
+
8
+ Evaluate implementation against acceptance criteria: $ARGUMENTS
9
+
10
+ ## Your Task
11
+
12
+ Run structured evaluation to verify the implementation meets requirements.
13
+
14
+ ## Evaluation Framework
15
+
16
+ ### Grader Types
17
+
18
+ 1. **Binary Grader** - Pass/Fail
19
+ - Does it work? Yes/No
20
+ - Good for: feature completion, bug fixes
21
+
22
+ 2. **Scalar Grader** - Score 0-100
23
+ - How well does it work?
24
+ - Good for: performance, quality metrics
25
+
26
+ 3. **Rubric Grader** - Category scores
27
+ - Multiple dimensions evaluated
28
+ - Good for: comprehensive review
29
+
30
+ ## Evaluation Process
31
+
32
+ ### Step 1: Define Criteria
33
+
34
+ ```
35
+ Acceptance Criteria:
36
+ 1. [Criterion 1] - [weight]
37
+ 2. [Criterion 2] - [weight]
38
+ 3. [Criterion 3] - [weight]
39
+ ```
40
+
41
+ ### Step 2: Run Tests
42
+
43
+ For each criterion:
44
+ - Execute relevant test
45
+ - Collect evidence
46
+ - Score result
47
+
48
+ ### Step 3: Calculate Score
49
+
50
+ ```
51
+ Final Score = Σ (criterion_score × weight) / total_weight
52
+ ```
53
+
54
+ ### Step 4: Report
55
+
56
+ ## Evaluation Report
57
+
58
+ ### Overall: [PASS/FAIL] (Score: X/100)
59
+
60
+ ### Criterion Breakdown
61
+
62
+ | Criterion | Score | Weight | Weighted |
63
+ |-----------|-------|--------|----------|
64
+ | [Criterion 1] | X/10 | 30% | X |
65
+ | [Criterion 2] | X/10 | 40% | X |
66
+ | [Criterion 3] | X/10 | 30% | X |
67
+
68
+ ### Evidence
69
+
70
+ **Criterion 1: [Name]**
71
+ - Test: [what was tested]
72
+ - Result: [outcome]
73
+ - Evidence: [screenshot, log, output]
74
+
75
+ ### Recommendations
76
+
77
+ [If not passing, what needs to change]
78
+
79
+ ## Pass@K Metrics
80
+
81
+ For non-deterministic evaluations:
82
+ - Run K times
83
+ - Calculate pass rate
84
+ - Report: "Pass@K = X/K"
85
+
86
+ ---
87
+
88
+ **TIP**: Use eval for acceptance testing before marking features complete.
@@ -0,0 +1,7 @@
1
+ 관련된 instinct들을 클러스터링하여 상위 스킬/커맨드로 진화시킨다.
2
+
3
+ ```bash
4
+ python3 .claude/skills/continuous-learning-v2/scripts/instinct-cli.py evolve
5
+ ```
6
+
7
+ 유사한 trigger/action 패턴을 가진 instinct들을 자동 그룹화하고, 새로운 복합 패턴이나 Rule 후보를 제안한다. 승격 제안은 인간 승인 후 적용.
@@ -0,0 +1,73 @@
1
+ # Harness Audit Command
2
+
3
+ Run a deterministic repository harness audit and return a prioritized scorecard.
4
+
5
+ ## Usage
6
+
7
+ `/harness-audit [scope] [--format text|json] [--root path]`
8
+
9
+ - `scope` (optional): `repo` (default), `hooks`, `skills`, `commands`, `agents`
10
+ - `--format`: output style (`text` default, `json` for automation)
11
+ - `--root`: audit a specific path instead of the current working directory
12
+
13
+ ## Deterministic Engine
14
+
15
+ Always run:
16
+
17
+ ```bash
18
+ node scripts/harness-audit.js <scope> --format <text|json> [--root <path>]
19
+ ```
20
+
21
+ This script is the source of truth for scoring and checks. Do not invent additional dimensions or ad-hoc points.
22
+
23
+ Rubric version: `2026-03-30`.
24
+
25
+ The script computes 7 fixed categories (`0-10` normalized each):
26
+
27
+ 1. Tool Coverage
28
+ 2. Context Efficiency
29
+ 3. Quality Gates
30
+ 4. Memory Persistence
31
+ 5. Eval Coverage
32
+ 6. Security Guardrails
33
+ 7. Cost Efficiency
34
+
35
+ Scores are derived from explicit file/rule checks and are reproducible for the same commit.
36
+ The script audits the current working directory by default and auto-detects whether the target is the ECC repo itself or a consumer project using ECC.
37
+
38
+ ## Output Contract
39
+
40
+ Return:
41
+
42
+ 1. `overall_score` out of `max_score` (70 for `repo`; smaller for scoped audits)
43
+ 2. Category scores and concrete findings
44
+ 3. Failed checks with exact file paths
45
+ 4. Top 3 actions from the deterministic output (`top_actions`)
46
+ 5. Suggested ECC skills to apply next
47
+
48
+ ## Checklist
49
+
50
+ - Use script output directly; do not rescore manually.
51
+ - If `--format json` is requested, return the script JSON unchanged.
52
+ - If text is requested, summarize failing checks and top actions.
53
+ - Include exact file paths from `checks[]` and `top_actions[]`.
54
+
55
+ ## Example Result
56
+
57
+ ```text
58
+ Harness Audit (repo): 66/70
59
+ - Tool Coverage: 10/10 (10/10 pts)
60
+ - Context Efficiency: 9/10 (9/10 pts)
61
+ - Quality Gates: 10/10 (10/10 pts)
62
+
63
+ Top 3 Actions:
64
+ 1) [Security Guardrails] Add prompt/tool preflight security guards in hooks/hooks.json. (hooks/hooks.json)
65
+ 2) [Tool Coverage] Sync commands/harness-audit.md and .opencode/commands/harness-audit.md. (.opencode/commands/harness-audit.md)
66
+ 3) [Eval Coverage] Increase automated test coverage across scripts/hooks/lib. (tests/)
67
+ ```
68
+
69
+ ## Arguments
70
+
71
+ $ARGUMENTS:
72
+ - `repo|hooks|skills|commands|agents` (optional scope)
73
+ - `--format text|json` (optional output format)
@@ -0,0 +1,8 @@
1
+ CL-v2에서 학습된 모든 instinct를 표시한다 (프로젝트 스코프 + 글로벌).
2
+
3
+ ```bash
4
+ python3 .claude/skills/continuous-learning-v2/scripts/instinct-cli.py status
5
+ ```
6
+
7
+ 각 instinct는 신뢰도 점수(0.3-0.9)와 함께 표시. 도메인별로 그룹화.
8
+ high-confidence instinct(≥0.8)는 Rule 승격 후보로 표시된다.
@@ -0,0 +1,10 @@
1
+ 프로젝트 스코프 instinct를 글로벌 스코프로 승격시킨다.
2
+
3
+ ```bash
4
+ python3 .claude/skills/continuous-learning-v2/scripts/instinct-cli.py promote [id]
5
+ ```
6
+
7
+ id 없이 실행하면 승격 후보(confidence ≥ 0.8, 2개+ 프로젝트에서 확인)를 목록 표시.
8
+ id를 지정하면 해당 instinct를 글로벌로 승격.
9
+
10
+ 글로벌 instinct는 모든 프로젝트에서 활성화된다.
@@ -0,0 +1,10 @@
1
+ Claude Code 설정(.claude/ 디렉토리)에 대한 AgentShield 보안 스캔을 실행한다.
2
+
3
+ `npx ecc-agentshield scan` 을 실행하여 CLAUDE.md, settings.json, MCP 서버, hooks, agent 정의에서 보안 취약점, 설정 오류, 인젝션 위험을 검사한다.
4
+
5
+ 옵션:
6
+ - `--fix`: 자동 수정 가능한 항목 수정 (하드코딩 시크릿 → 환경변수 참조 등)
7
+ - `--min-severity medium`: 최소 심각도 필터
8
+ - `--format json|markdown|html`: 출력 형식
9
+
10
+ 결과는 A-F 등급으로 표시. CRITICAL/HIGH 발견 시 즉시 조치 필요.
@@ -0,0 +1,190 @@
1
+ SPEC 확정 후 나머지 5단계(Plan → Build → Test → Review → Ship)를 자동으로 순차 진행하고, **SPEC 정합성이 충족될 때까지 Ralph loop로 반복 검증**한다.
2
+
3
+ ## 사전 조건
4
+
5
+ 1. `docs/SPEC.md` 존재 확인. 없으면 "/uzys:spec을 먼저 실행하세요" 안내 후 **중단**.
6
+ 2. `.claude/gate-status.json`의 `define.completed` = true 확인. false면 **중단**.
7
+
8
+ ## 실행 순서
9
+
10
+ 각 단계를 **순차 실행**. 각 단계 완료 시 gate-status.json을 자동 업데이트하고 다음 단계로 진행한다.
11
+
12
+ ### 1. Plan
13
+ - `docs/plan.md` + `docs/todo.md` 생성
14
+ - plan-checker agent로 Goal-backward 검증 (Revision Gate, 최대 3회)
15
+ - 완료 시: `jq '.plan.completed = true | .plan.timestamp = (now | strftime("%Y-%m-%dT%H:%M:%SZ"))' .claude/gate-status.json > /tmp/gate-tmp.json && mv /tmp/gate-tmp.json .claude/gate-status.json`
16
+
17
+ ### 2. Build
18
+ - `docs/todo.md`에서 미완료 task를 순차 선택
19
+ - 각 task에 TDD 사이클 적용 (RED → GREEN → REFACTOR)
20
+ - 각 task 완료 시 **즉시 커밋** (commit-policy 준수)
21
+ - todo.md 체크박스 업데이트
22
+ - 모든 task 완료 시: gate-status build.completed = true
23
+
24
+ ### 3. Test
25
+ - 전체 테스트 스위트 실행
26
+ - test-policy.md 커버리지 기준 확인 (UI 60%, API 80%, 로직 90%)
27
+ - 미달 시 추가 테스트 작성 시도 (최대 3회)
28
+ - 통과 시: gate-status verify.completed = true
29
+
30
+ ### 4. Review
31
+ - reviewer subagent (context: fork) 호출
32
+ - 5축 리뷰: correctness, readability, architecture, security, performance
33
+ - CRITICAL 이슈 발견 시 즉시 수정 시도 (최대 3회)
34
+ - CRITICAL 0건 시: gate-status review.completed = true
35
+
36
+ ### 5. SPEC Compliance Check (Ralph Loop) ← 핵심
37
+
38
+ **Ship 전에 반드시 실행**. SPEC.md에 정의된 모든 요구사항이 실제로 구현됐는지 확인하고, 미달이면 Build로 돌아가 수정한다.
39
+
40
+ #### 5.1 SPEC 파싱
41
+
42
+ `docs/SPEC.md`에서 다음을 자동 추출:
43
+ - **Objective** 섹션의 핵심 목표
44
+ - **Features** 섹션의 각 기능 항목 (체크리스트 또는 표)
45
+ - **Acceptance Criteria** (있으면)
46
+ - **Boundaries > DO NOT CHANGE** 영역
47
+ - **Non-Goals** 목록
48
+
49
+ #### 5.2 구현 검증 (자동)
50
+
51
+ 추출된 각 항목에 대해:
52
+
53
+ 1. **파일 존재 확인**: 해당 기능이 구현된 파일이 프로젝트에 존재하는가? (Glob/Grep)
54
+ 2. **코드 매칭**: 기능 키워드가 소스 코드에 등장하는가? (Grep)
55
+ 3. **테스트 존재**: 해당 기능에 대한 테스트 파일이 있는가?
56
+ 4. **빌드 통과**: 프로젝트 빌드/타입체크가 PASS인가?
57
+ 5. **DO NOT CHANGE 미침범**: 보호 영역이 수정되지 않았는가?
58
+ 6. **Non-Goals 미침범**: Non-Goals에 해당하는 구현이 추가되지 않았는가?
59
+
60
+ #### 5.3 결과 분류
61
+
62
+ 각 항목을 다음 3가지로 분류:
63
+ - **PASS**: 구현 확인됨
64
+ - **PARTIAL**: 파일은 있지만 불완전 (예: stub, TODO, 빈 함수)
65
+ - **MISSING**: 구현 없음
66
+
67
+ #### 5.4 Ralph Loop (반복 수정)
68
+
69
+ ```
70
+ iteration = 0
71
+ MAX_ITERATIONS = 5
72
+
73
+ while MISSING 또는 PARTIAL 항목 존재:
74
+ iteration += 1
75
+ if iteration > MAX_ITERATIONS:
76
+ → Escalation Gate: 사용자에게 "5회 시도 후에도 미달 항목 N건" 보고
77
+ → 사용자 결정 대기 (계속 / 중단 / 수동 수정)
78
+ break
79
+
80
+ 1. MISSING/PARTIAL 항목 목록 출력
81
+ 2. 각 항목에 대해:
82
+ - 구현 코드 작성 (Build 단계 로직 재사용)
83
+ - 해당 기능의 테스트 작성
84
+ - 즉시 커밋
85
+ 3. 전체 빌드/테스트 재실행
86
+ 4. SPEC Compliance 재검증 (5.2 반복)
87
+ 5. 결과 출력: "Iteration {iteration}: PASS {n}, PARTIAL {m}, MISSING {k}"
88
+
89
+ if 모든 항목 PASS:
90
+ → "SPEC 정합성 100% 달성" 출력
91
+ → gate-status verify.completed = true (이미 안 되어있으면)
92
+ ```
93
+
94
+ #### 5.5 검증 보고서
95
+
96
+ 각 iteration 후 보고:
97
+
98
+ ```
99
+ ## SPEC Compliance Report — Iteration {N}/{MAX}
100
+
101
+ | # | Feature | Status | Evidence |
102
+ |---|---------|--------|----------|
103
+ | 1 | 노트 CRUD | PASS | src/services/note.ts:15 + tests/note.test.ts |
104
+ | 2 | 카테고리 트리 | PARTIAL | src/components/Sidebar.tsx 있지만 중첩 미구현 |
105
+ | 3 | FTS 검색 | MISSING | 검색 관련 파일 없음 |
106
+
107
+ PASS: X / PARTIAL: Y / MISSING: Z
108
+ Next: {Y+Z}건 수정 후 재검증
109
+ ```
110
+
111
+ ### 6. Ship (SPEC 100% 달성 후)
112
+ - agentshield-gate 자동 실행 (CRITICAL 차단)
113
+ - spec-drift-check ship 모드 실행
114
+ - 전부 통과 시: gate-status ship.completed = true
115
+ - 최종 커밋 + 태그 제안
116
+
117
+ ### 7. Post-Ship: CLAUDE.md 리뷰 (자동)
118
+ Ship 완료 후 CLAUDE.md를 자동 검토한다:
119
+
120
+ 1. **instinct 확인**: `/ecc:instinct-status` 실행 → confidence ≥ 0.8인 instinct를 CLAUDE.md 또는 `.claude/rules/` 반영 후보로 제안
121
+ 2. **패턴 체크**: 이번 세션에서 반복된 교정/실수 패턴이 있으면 CLAUDE.md에 추가 제안
122
+ 3. **모순 검출**: 기존 CLAUDE.md 지시와 이번 세션 행동이 충돌한 부분 보고
123
+ 4. **rules-distill**: ECC `rules-distill` 스킬로 현재 스킬에서 cross-cutting 원칙 추출 가능성 확인
124
+
125
+ **제약**: 제안만. 직접 수정 금지 (인간 승인 필수). 변경 제안을 사용자에게 목록으로 출력.
126
+
127
+ **예시 출력**:
128
+ ```
129
+ ## CLAUDE.md 개선 제안 (Post-Ship Review)
130
+
131
+ 1. [instinct] "Rust 에러는 Result<T, E> 반환 강제" (confidence 0.85) → error-handling rule 보강 후보
132
+ 2. [반복 교정] 사용자가 3회 "커밋 먼저 해" 교정 → commit-policy 강조 필요
133
+ 3. [모순 없음]
134
+ 4. [rules-distill] 해당 없음
135
+
136
+ 승인 시 적용할 항목 번호를 알려주세요 (또는 "skip"):
137
+ ```
138
+
139
+ ## 자동 재시도 (Revision Gate 패턴)
140
+
141
+ 각 단계에서 실패 시:
142
+ 1. 원인 분석 + 즉시 수정 시도
143
+ 2. 최대 **3회** 재시도 (단계별)
144
+ 3. SPEC Compliance Loop는 **최대 5회** (전체 루프)
145
+ 4. 초과 시 **사용자에게 escalation** (Escalation Gate)
146
+ 5. 사용자 응답 대기
147
+
148
+ ## 중단 조건 (Abort Gate)
149
+
150
+ - SPEC.md 300줄 초과 → spec-scaling 제안 + 중단
151
+ - 동일 이슈 3회 연속 미해결 → escalation
152
+ - SPEC Compliance 5회 반복 후 MISSING 잔존 → escalation
153
+ - 사용자 Ctrl+C → 현재 상태 보존
154
+
155
+ ## Arguments
156
+
157
+ ```
158
+ /uzys:auto # Plan부터 시작 (기본)
159
+ /uzys:auto from=build # Build부터 (Plan 이미 완료 시)
160
+ /uzys:auto from=test # Test부터
161
+ /uzys:auto from=review # Review부터
162
+ /uzys:auto from=ship # Ship부터 (SPEC compliance 포함)
163
+ /uzys:auto from=verify # SPEC compliance check만 실행
164
+ ```
165
+
166
+ ## Ralph Loop 동작 요약
167
+
168
+ ```
169
+ /uzys:spec (사용자)
170
+
171
+ /uzys:auto (자동 시작)
172
+
173
+ Plan → Build → Test → Review
174
+
175
+ SPEC Compliance Check ← Ralph Loop 진입
176
+ ↓ ↑
177
+ MISSING? → Build로 돌아가 수정 → Test → 재검증
178
+ ↓ (PASS)
179
+ Ship
180
+ ```
181
+
182
+ **핵심**: Ship은 SPEC.md의 **모든 Feature가 PASS일 때만** 진입 가능. 한 건이라도 MISSING이면 Build로 돌아가 구현. 이 루프가 "될 때까지 계속 돈다".
183
+
184
+ ## 참조
185
+
186
+ - gate-check.sh는 `/uzys:auto`를 게이트 체크 대상에서 **제외**. auto 커맨드가 내부에서 gate-status를 직접 관리.
187
+ - 각 단계의 상세 동작은 개별 `/uzys:plan`, `/uzys:build` 등의 커맨드 정의를 따른다.
188
+ - gates-taxonomy.md의 4유형 게이트 (Pre-flight/Revision/Escalation/Abort) 적용.
189
+ - verification-loop 스킬 (ECC): Build→Type→Lint→Test→Security→Diff 6단계 검증 사이클. SPEC compliance check 내에서 활용.
190
+ - P9 Circuit Breakers: 5회 반복 상한. 무한 루프 방지.
@@ -0,0 +1,42 @@
1
+ Build phase — TDD로 점진적 구현한다.
2
+
3
+ ## Gate Check
4
+
5
+ `docs/todo.md`가 존재하는지 확인한다. 없으면 "Plan 단계(`/uzys:plan`)를 먼저 완료하세요" 경고.
6
+
7
+ ## Process
8
+
9
+ 1. `docs/todo.md`에서 다음 미완료 task를 선택한다.
10
+ 2. agent-skills의 incremental-implementation + test-driven-development 스킬을 따른다:
11
+ - RED: 실패하는 테스트 먼저 작성
12
+ - GREEN: 테스트를 통과하는 최소 구현
13
+ - REFACTOR: 코드 개선 (테스트 유지)
14
+ 3. 완료된 task를 todo.md에서 체크한다.
15
+ 4. **git-policy.md 적용: 즉시 commit → push**. issue_tracking enabled 시 commit message에 issue 번호 포함:
16
+ - 진행 중: `<type>: 설명 (refs #N)`
17
+ - task 완전 완료: PR에서 `Closes #N` 권장 (commit 단위 close 지양)
18
+ 5. Build 중 새 bug/feature 발견 → `gh-issue-workflow` skill로 backlog 등록 (5섹션 ISSUE 템플릿). 현재 작업 흐름 깨지 않고 비동기 기록.
19
+
20
+ ## Context-Aware Skill Selection
21
+
22
+ 현재 편집 중인 파일에 따라 추가 스킬을 자동 활성화:
23
+
24
+ | 파일 유형 | 추가 활성화 |
25
+ |-----------|------------|
26
+ | `.tsx`, `.jsx`, `.html`, `.css` | frontend-ui-engineering 스킬 + DESIGN.md/.impeccable.md 참조 |
27
+ | API 라우트, 엔드포인트 | api-and-interface-design 스킬 |
28
+ | 외부 라이브러리 사용 | source-driven-development 스킬 (공식 문서 확인) |
29
+
30
+ ## Auto-Actions
31
+
32
+ - SPEC.md가 300줄 초과 시 spec-scaling 스킬로 분리 제안.
33
+ - 커밋 없이 다음 task로 넘어가면 경고.
34
+ - 각 task 완료 시 todo.md 자동 업데이트.
35
+
36
+ ## Gate Status Update
37
+
38
+ 이 단계가 성공적으로 완료되면 `.claude/gate-status.json`의 `build.completed`를 `true`로, `build.timestamp`를 현재 시각으로 업데이트한다.
39
+
40
+ ```bash
41
+ jq '.build.completed = true | .build.timestamp = now | .build.timestamp = (now | strftime("%Y-%m-%dT%H:%M:%SZ"))' .claude/gate-status.json > /tmp/gate-tmp.json && mv /tmp/gate-tmp.json .claude/gate-status.json
42
+ ```
@@ -0,0 +1,55 @@
1
+ Plan phase — 작업을 검증 가능한 작은 단위로 분해한다.
2
+
3
+ ## Gate Check
4
+
5
+ `docs/SPEC.md`가 존재하는지 확인한다. 없으면 "Define 단계(`/uzys:spec`)를 먼저 완료하세요" 경고.
6
+
7
+ ## Plan Depth — 변경 복잡도에 맞춰라
8
+
9
+ 모든 SPEC을 동일하게 분해하지 않는다. 복잡도별로 plan 깊이를 조정:
10
+
11
+ | 복잡도 | 신호 | Plan 형태 |
12
+ |--------|------|----------|
13
+ | **Trivial** | diff를 1문장으로 설명 가능 / single file / 명확한 fix | **Plan skip 가능**. todo.md에 1-task entry만 (또는 plan 단계 자체 건너뛰기 사용자 합의 시) |
14
+ | **Standard** | multi-file / 여러 모듈 / unfamiliar 코드 일부 | **Milestone plan** (3-5개 outcome). per-task AC는 milestone 수준 |
15
+ | **Complex** | 새 기능 / cross-cutting / ambiguous 요구사항 | **Detailed plan** (vertical slice 10+ task, per-task AC, 의존성 그래프) |
16
+
17
+ 판단 기준: Anthropic best practices — *"if you can describe the diff in one sentence, skip the plan"*. Opus급 모델은 자율 분해 가능하므로 micro-task 강제 시 ceremony가 됨.
18
+
19
+ ## Process
20
+
21
+ 1. SPEC.md를 읽고 전체 범위 + **복잡도** 판정 (위 표).
22
+ 1.5. **GitHub Issue 우선 fetch (issue_tracking: enabled 시)**:
23
+ - `gh issue list --state open --json number,title,body,labels` 호출
24
+ - 각 issue body에서 `방향성 (YYYY-MM-DD 확정)` 패턴 grep — 확정된 것만 후보
25
+ - 전제(Given) 미충족 issue 제외
26
+ - 우선순위 정렬 (label P0 > P1 > P2 > unlabeled)
27
+ - 상위 1-3개 issue → todo.md 진입 후보
28
+ 2. **Trivial이면**: todo.md만 생성하고 즉시 Build로. plan.md는 1-2줄.
29
+ 3. **Standard/Complex이면**: agent-skills의 planning-and-task-breakdown 스킬을 따라 분해:
30
+ - Vertical slicing: 수평 레이어가 아닌 수직 기능 단위
31
+ - 각 task에 Acceptance Criteria 정의 (Standard는 milestone 수준, Complex는 task 수준)
32
+ - 의존성 순서 정렬
33
+ 4. **North Star 4-gate 체크 (Complex 복잡도 + `docs/NORTH_STAR.md` 존재 시)**:
34
+ - 신규 기능/task가 NORTH_STAR.md §5 Decision Heuristics의 4-gate(Trend/Persona/Capability/Lean)를 모두 통과하는가?
35
+ - 1개 이상 fail 시 사용자에게 보고 후 결정 대기 (자동 진행 금지)
36
+ - NORTH_STAR.md 부재 시 skip
37
+ 5. Sprint Contract: 범위(포함/제외) + 완료 기준 + 제약 조건.
38
+ 6. `docs/plan.md` + `docs/todo.md` 생성.
39
+
40
+ ## Output
41
+
42
+ - `docs/plan.md` — 전체 계획, Phase 분해, 의존성
43
+ - `docs/todo.md` — 체크리스트 형태의 할 일 목록
44
+
45
+ ## Gate
46
+
47
+ plan.md + todo.md가 존재하고, 최소 1개 task가 정의되어 있어야 완료.
48
+
49
+ ## Gate Status Update
50
+
51
+ 이 단계가 성공적으로 완료되면 `.claude/gate-status.json`의 `plan.completed`를 `true`로, `plan.timestamp`를 현재 시각으로 업데이트한다.
52
+
53
+ ```bash
54
+ jq '.plan.completed = true | .plan.timestamp = now | .plan.timestamp = (now | strftime("%Y-%m-%dT%H:%M:%SZ"))' .claude/gate-status.json > /tmp/gate-tmp.json && mv /tmp/gate-tmp.json .claude/gate-status.json
55
+ ```