@uzysjung/agent-harness 26.88.0 → 26.89.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/README.ko.md +3 -26
- package/README.md +8 -32
- package/dist/{chunk-QHYH6P32.js → chunk-EZZOJPG4.js} +1 -11
- package/dist/chunk-EZZOJPG4.js.map +1 -0
- package/dist/index.js +262 -748
- package/dist/index.js.map +1 -1
- package/dist/trust-tier-drift.js +1 -1
- package/package.json +1 -1
- package/templates/agents/plan-checker.md +3 -4
- package/templates/agents/reviewer.md +1 -1
- package/templates/antigravity/AGENTS.md.template +0 -28
- package/templates/codex/AGENTS.md.template +0 -25
- package/templates/codex/README.md +5 -15
- package/templates/codex/config.toml.template +0 -10
- package/templates/codex/hooks/README.md +0 -2
- package/templates/hooks/checkpoint-snapshot.sh +1 -22
- package/templates/hooks/session-start.sh +1 -1
- package/templates/hooks/spec-drift-check.sh +2 -20
- package/templates/opencode/AGENTS.md.template +3 -38
- package/templates/opencode/README.md +0 -4
- package/templates/opencode/opencode.json.template +1 -3
- package/templates/project-claude/fragments/csr-fastapi/boundaries.md +0 -1
- package/templates/project-claude/fragments/csr-fastapi/commands.md +0 -1
- package/templates/project-claude/fragments/csr-fastapi/plugins.md +1 -1
- package/templates/project-claude/fragments/csr-fastify/boundaries.md +0 -1
- package/templates/project-claude/fragments/csr-fastify/commands.md +0 -1
- package/templates/project-claude/fragments/csr-fastify/plugins.md +1 -1
- package/templates/project-claude/fragments/csr-supabase/boundaries.md +0 -1
- package/templates/project-claude/fragments/csr-supabase/commands.md +0 -1
- package/templates/project-claude/fragments/csr-supabase/plugins.md +1 -1
- package/templates/project-claude/fragments/csr-supabase/supabase-auth.md +0 -2
- package/templates/project-claude/fragments/data/boundaries.md +0 -1
- package/templates/project-claude/fragments/data/commands.md +0 -1
- package/templates/project-claude/fragments/data/plugins.md +1 -1
- package/templates/project-claude/fragments/executive/boundaries.md +0 -1
- package/templates/project-claude/fragments/executive/commands.md +0 -1
- package/templates/project-claude/fragments/executive/skills.md +1 -1
- package/templates/project-claude/fragments/executive/workflow.md +1 -2
- package/templates/project-claude/fragments/growth-marketing/boundaries.md +0 -1
- package/templates/project-claude/fragments/growth-marketing/commands.md +0 -1
- package/templates/project-claude/fragments/growth-marketing/skills.md +1 -1
- package/templates/project-claude/fragments/growth-marketing/workflow.md +1 -2
- package/templates/project-claude/fragments/project-management/boundaries.md +0 -1
- package/templates/project-claude/fragments/project-management/commands.md +0 -1
- package/templates/project-claude/fragments/project-management/skills.md +1 -1
- package/templates/project-claude/fragments/project-management/workflow.md +1 -2
- package/templates/project-claude/fragments/ssr-htmx/boundaries.md +0 -1
- package/templates/project-claude/fragments/ssr-htmx/commands.md +0 -1
- package/templates/project-claude/fragments/ssr-htmx/plugins.md +1 -1
- package/templates/project-claude/fragments/ssr-nextjs/boundaries.md +0 -1
- package/templates/project-claude/fragments/ssr-nextjs/commands.md +0 -1
- package/templates/project-claude/fragments/ssr-nextjs/plugins.md +1 -1
- package/templates/project-claude/fragments/tooling/boundaries.md +0 -1
- package/templates/project-claude/fragments/tooling/commands.md +0 -1
- package/templates/project-claude/fragments/tooling/skills.md +1 -1
- package/templates/rules/git-policy.md +2 -2
- package/templates/rules/ship-checklist.md +3 -3
- package/templates/settings.json +0 -13
- package/templates/skills/gh-issue-workflow/SKILL.md +8 -8
- package/templates/skills/north-star/SKILL.md +4 -4
- package/templates/skills/ui-visual-review/SKILL.md +6 -6
- package/dist/chunk-QHYH6P32.js.map +0 -1
- package/templates/codex/hooks/gate-check.sh +0 -7
- package/templates/codex/skills/uzys-build/SKILL.md +0 -24
- package/templates/codex/skills/uzys-plan/SKILL.md +0 -24
- package/templates/codex/skills/uzys-review/SKILL.md +0 -24
- package/templates/codex/skills/uzys-ship/SKILL.md +0 -24
- package/templates/codex/skills/uzys-spec/SKILL.md +0 -28
- package/templates/codex/skills/uzys-test/SKILL.md +0 -24
- package/templates/commands/uzys/auto.md +0 -190
- package/templates/commands/uzys/build.md +0 -42
- package/templates/commands/uzys/plan.md +0 -55
- package/templates/commands/uzys/review.md +0 -44
- package/templates/commands/uzys/ship.md +0 -49
- package/templates/commands/uzys/spec.md +0 -93
- package/templates/commands/uzys/test.md +0 -58
- package/templates/hooks/agentshield-gate.sh +0 -101
- package/templates/hooks/gate-check.sh +0 -138
- package/templates/opencode/.opencode/commands/uzys-build.md +0 -22
- package/templates/opencode/.opencode/commands/uzys-plan.md +0 -22
- package/templates/opencode/.opencode/commands/uzys-review.md +0 -22
- package/templates/opencode/.opencode/commands/uzys-ship.md +0 -22
- package/templates/opencode/.opencode/commands/uzys-spec.md +0 -28
- package/templates/opencode/.opencode/commands/uzys-test.md +0 -22
- package/templates/opencode/.opencode/plugins/uzys-harness.ts +0 -146
- package/templates/project-claude/fragments/csr-fastapi/workflow.md +0 -8
- package/templates/project-claude/fragments/csr-fastify/workflow.md +0 -8
- package/templates/project-claude/fragments/csr-supabase/workflow.md +0 -8
- package/templates/project-claude/fragments/data/workflow.md +0 -9
- package/templates/project-claude/fragments/ssr-htmx/workflow.md +0 -8
- package/templates/project-claude/fragments/ssr-nextjs/workflow.md +0 -8
- package/templates/project-claude/fragments/tooling/workflow.md +0 -5
package/dist/trust-tier-drift.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uzysjung/agent-harness",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.89.0",
|
|
4
4
|
"description": "Curate vetted AI-coding skills & plugins by your tech stack — install only what you need, across Claude Code, Codex, OpenCode & Antigravity",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-checker
|
|
3
|
-
description: Outcome-driven verification of docs/plan.md + docs/todo.md against docs/SPEC.md goals. Catches plans that look complete but miss the objective. Invoked
|
|
3
|
+
description: Outcome-driven verification of docs/plan.md + docs/todo.md against docs/SPEC.md goals. Catches plans that look complete but miss the objective. Invoked by the reviewer subagent during plan verification.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
model: opus
|
|
6
6
|
origin: self-authored (GSD gsd-plan-checker 사상 흡수, 100% 자체 작성)
|
|
@@ -12,14 +12,13 @@ origin: self-authored (GSD gsd-plan-checker 사상 흡수, 100% 자체 작성)
|
|
|
12
12
|
|
|
13
13
|
## 호출 조건
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
`reviewer` subagent가 plan 검증 시 이 에이전트를 호출한다. 또는 수동으로 `Agent(subagent_type=plan-checker, ...)` 직접 호출.
|
|
16
16
|
|
|
17
17
|
## 입력 (필수 파일)
|
|
18
18
|
|
|
19
19
|
- `docs/SPEC.md` — 명세. 없으면 **BLOCKER**, 중단.
|
|
20
20
|
- `docs/plan.md` — 분해된 계획. 없으면 **BLOCKER**.
|
|
21
21
|
- `docs/todo.md` — 체크박스 기반 task 목록. 없으면 **WARNING**.
|
|
22
|
-
- `.claude/gate-status.json` — 게이트 진행 상태. 있으면 참조.
|
|
23
22
|
- `.claude/rules/gates-taxonomy.md` — Gates taxonomy 참조 (이 에이전트는 **Revision Gate** 패턴 구현).
|
|
24
23
|
|
|
25
24
|
## 검증 Dimensions (6개)
|
|
@@ -100,7 +99,7 @@ Recommendation: <있는 경우>
|
|
|
100
99
|
## Next Action
|
|
101
100
|
(a) 사용자에게 escalate
|
|
102
101
|
(b) 수정 후 재검증
|
|
103
|
-
(c) 통과 —
|
|
102
|
+
(c) 통과 — plan 검증 완료
|
|
104
103
|
```
|
|
105
104
|
|
|
106
105
|
## 핵심 원칙
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reviewer
|
|
3
|
-
description: "Multi-perspective verification agent. Reviews code, documentation, UI, and QA from an independent evaluator perspective. Enforces Segregation of Duties (SOD) — implementation and verification must be separate. Use for
|
|
3
|
+
description: "Multi-perspective verification agent. Reviews code, documentation, UI, and QA from an independent evaluator perspective. Enforces Segregation of Duties (SOD) — implementation and verification must be separate. Use for review phases."
|
|
4
4
|
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
5
|
model: opus
|
|
6
6
|
context: fork
|
|
@@ -8,32 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
{PROJECT_RULES}
|
|
10
10
|
|
|
11
|
-
## Workflow Gates
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
Define(/uzys-spec) → Plan(/uzys-plan) → Build(/uzys-build) → Verify(/uzys-test) → Review(/uzys-review) → Ship(/uzys-ship)
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
각 단계 완료 없이 다음 진행 금지. 6-Gate workflow 는 `uzys-harness 6-Gate workflow` opt-in 시에만 `.agents/workflows/` 에 설치됨.
|
|
18
|
-
|
|
19
|
-
**Hotfix 단축**: Build → Verify → Ship (긴급 수정에 한함)
|
|
20
|
-
**Executive track**: 6단계 게이트 미적용. 자연어 요청 → strategist + document-skills → 산출물 → 검토.
|
|
21
|
-
|
|
22
|
-
## Command Reference (Antigravity workflows)
|
|
23
|
-
|
|
24
|
-
`.agents/workflows/uzys-{phase}.md` 파일은 `/` prefix 슬래시로 호출됨:
|
|
25
|
-
|
|
26
|
-
| Slash | 용도 |
|
|
27
|
-
|-------|------|
|
|
28
|
-
| `/uzys-spec` | Define — 구조화된 스펙 작성 |
|
|
29
|
-
| `/uzys-plan` | Plan — 검증 가능한 작은 단위로 분해 |
|
|
30
|
-
| `/uzys-build` | Build — TDD 점진적 구현 |
|
|
31
|
-
| `/uzys-test` | Verify — 테스트 실행 + 커버리지 |
|
|
32
|
-
| `/uzys-review` | Review — 5축 리뷰 (correctness, readability, architecture, security, performance) |
|
|
33
|
-
| `/uzys-ship` | Ship — 프리런치 체크리스트 + 배포 |
|
|
34
|
-
|
|
35
|
-
Antigravity 는 워크플로우를 파일명 기반 `/` 슬래시로 호출 → `uzys-{phase}.md` = `/uzys-{phase}`. Claude Code 원본은 `/uzys:*` 유지.
|
|
36
|
-
|
|
37
11
|
## Protected Files (DO NOT EDIT)
|
|
38
12
|
|
|
39
13
|
- `.env*`, `**/credentials.json`
|
|
@@ -48,10 +22,8 @@ Antigravity 는 워크플로우를 파일명 기반 `/` 슬래시로 호출 →
|
|
|
48
22
|
| Scope | 위치 | 비고 |
|
|
49
23
|
|-------|------|------|
|
|
50
24
|
| Workspace skills | `.agents/skills/` | 본 프로젝트 한정 (Codex 공유) |
|
|
51
|
-
| Workspace workflows | `.agents/workflows/` | 본 프로젝트 한정 |
|
|
52
25
|
| Workspace rules | `.agents/rules/` | 본 문서 |
|
|
53
26
|
| Global rules | `~/.gemini/GEMINI.md` | 사용자 직접 관리 (harness 미터치) |
|
|
54
|
-
| Global skills | `~/.gemini/antigravity/skills/` | `--with-antigravity-global` + `--scope global` opt-in 시만 |
|
|
55
27
|
|
|
56
28
|
---
|
|
57
29
|
|
|
@@ -8,18 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
{PROJECT_RULES}
|
|
10
10
|
|
|
11
|
-
## Workflow Gates
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
Define(/uzys-spec) → Plan(/uzys-plan) → Build(/uzys-build) → Verify(/uzys-test) → Review(/uzys-review) → Ship(/uzys-ship)
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
각 단계 완료 없이 다음 진행 금지. 건너뛰기 시도 시 `pre_tool_use` hook이 exit 2로 차단.
|
|
18
|
-
|
|
19
|
-
**Hotfix 단축**: Build → Verify → Ship (긴급 수정에 한함)
|
|
20
|
-
|
|
21
|
-
**Executive track**: 6단계 게이트 미적용. 자연어 요청 → strategist + document-skills → 산출물 → 검토.
|
|
22
|
-
|
|
23
11
|
## Session Start
|
|
24
12
|
|
|
25
13
|
매 세션 시작 시:
|
|
@@ -48,19 +36,6 @@ Codex `sandbox_mode = "workspace-write"` + `approval_policy = "on-request"` 가
|
|
|
48
36
|
- 세션 시작 시 `git pull` 필수.
|
|
49
37
|
- Conventional Commits — `<type>: <description>` (feat, fix, refactor, docs, test, chore, perf, ci)
|
|
50
38
|
|
|
51
|
-
## Command Reference (Codex slash)
|
|
52
|
-
|
|
53
|
-
| Slash | 용도 |
|
|
54
|
-
|-------|------|
|
|
55
|
-
| `/uzys-spec` | Define — 구조화된 스펙 작성 |
|
|
56
|
-
| `/uzys-plan` | Plan — 검증 가능한 작은 단위로 분해 |
|
|
57
|
-
| `/uzys-build` | Build — TDD 점진적 구현 |
|
|
58
|
-
| `/uzys-test` | Verify — 테스트 실행 + 커버리지 |
|
|
59
|
-
| `/uzys-review` | Review — 5축 리뷰 (correctness, readability, architecture, security, performance) |
|
|
60
|
-
| `/uzys-ship` | Ship — 프리런치 체크리스트 + 배포 |
|
|
61
|
-
|
|
62
|
-
Codex는 slash namespace(`uzys:`)를 지원하지 않아 `uzys-*` 형식으로 rename됨. Claude Code 원본은 `/uzys:*` 유지.
|
|
63
|
-
|
|
64
39
|
## Agents (subagent, multi_agent stable)
|
|
65
40
|
|
|
66
41
|
| Agent | Model | 역할 |
|
|
@@ -15,19 +15,11 @@ templates/codex/
|
|
|
15
15
|
├── README.md # 본 파일
|
|
16
16
|
├── AGENTS.md.template # 프로젝트 AGENTS.md (CLAUDE.md에서 생성)
|
|
17
17
|
├── config.toml.template # 프로젝트 .codex/config.toml (hooks + mcp + sandbox)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
│ └── uncommitted-check.sh # post_tool_use (Bash 한정)
|
|
24
|
-
└── skills/ # 6 uzys skills (Codex skill 포맷)
|
|
25
|
-
├── uzys-spec/SKILL.md
|
|
26
|
-
├── uzys-plan/SKILL.md
|
|
27
|
-
├── uzys-build/SKILL.md
|
|
28
|
-
├── uzys-test/SKILL.md
|
|
29
|
-
├── uzys-review/SKILL.md
|
|
30
|
-
└── uzys-ship/SKILL.md
|
|
18
|
+
└── hooks/ # Shell 스크립트 (.claude/hooks/ 재사용 가능)
|
|
19
|
+
├── README.md # 포팅 상태 + Event 매핑
|
|
20
|
+
├── hito-counter.sh # user_prompt_submit
|
|
21
|
+
├── session-start.sh # session_start
|
|
22
|
+
└── uncommitted-check.sh # post_tool_use (Bash 한정)
|
|
31
23
|
```
|
|
32
24
|
|
|
33
25
|
## 설치 대상 경로 (`setup-harness.sh --cli=codex` 실행 후)
|
|
@@ -37,7 +29,6 @@ templates/codex/
|
|
|
37
29
|
| `AGENTS.md.template` | `<project>/AGENTS.md` |
|
|
38
30
|
| `config.toml.template` | `<project>/.codex/config.toml` |
|
|
39
31
|
| `hooks/*.sh` | `<project>/.codex/hooks/*.sh` |
|
|
40
|
-
| `skills/uzys-*/` | `~/.codex/skills/uzys-*/` (공식 $CODEX_HOME/skills) |
|
|
41
32
|
| 사용자 `~/.codex/config.toml`에 trust 등록 추가 | (D4 opt-in 확인) |
|
|
42
33
|
|
|
43
34
|
## Hook Event 매핑 (Claude → Codex)
|
|
@@ -57,7 +48,6 @@ stdin JSON 필드(`session_id`, `cwd`, `tool_name`, `tool_input`, `hook_event_na
|
|
|
57
48
|
|
|
58
49
|
- `AGENTS.md.template` 본문 — CLAUDE.md에서 변환 (Phase C)
|
|
59
50
|
- `hooks/*.sh` 본체 — `.claude/hooks/` 에서 포팅 (Phase C)
|
|
60
|
-
- `skills/uzys-*/SKILL.md` 본문 — `.claude/commands/uzys/*.md`에서 포팅 + slash prefix rename (Phase C)
|
|
61
51
|
- `setup-harness.sh --cli=codex` 경로 — Phase D
|
|
62
52
|
- Trust entry 확인 프롬프트 — Phase D
|
|
63
53
|
- `--cli=codex` dogfood 검증 — Phase F
|
|
@@ -58,16 +58,6 @@ type = "command"
|
|
|
58
58
|
timeout = 5
|
|
59
59
|
async = true # non-blocking 측정
|
|
60
60
|
|
|
61
|
-
# PreToolUse(Skill matcher): Phase 순서 강제 (exit 2로 차단)
|
|
62
|
-
# 주의: Issue #16732 — Bash 툴에만 발화. ApplyPatch(파일 쓰기)에는 fire 안 함
|
|
63
|
-
[[hooks.pre_tool_use]]
|
|
64
|
-
name = "gate-check"
|
|
65
|
-
command = ["{PROJECT_DIR}/.codex/hooks/gate-check.sh"]
|
|
66
|
-
type = "command"
|
|
67
|
-
timeout = 10
|
|
68
|
-
matcher = "Skill"
|
|
69
|
-
async = false
|
|
70
|
-
|
|
71
61
|
# PostToolUse: 미커밋 파일 경고 (Bash 한정)
|
|
72
62
|
[[hooks.post_tool_use]]
|
|
73
63
|
name = "uncommitted-check"
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
|--------------------------|----------|---------------|------|
|
|
10
10
|
| `session_start` | `session-start.sh` | `.claude/hooks/session-start.sh` | Phase C 포팅 예정 |
|
|
11
11
|
| `user_prompt_submit` | `hito-counter.sh` | `.claude/hooks/hito-counter.sh` | Phase C 포팅 예정 |
|
|
12
|
-
| `pre_tool_use` matcher="Skill" | `gate-check.sh` | `.claude/hooks/gate-check.sh` | Phase C 포팅 예정 |
|
|
13
12
|
| `post_tool_use` | `uncommitted-check.sh` | `.claude/hooks/uncommitted-check.sh` | Phase C 포팅 예정 |
|
|
14
13
|
| ❌ (hook 사용 안 함) | ❌ | `.claude/hooks/protect-files.sh` | **Codex sandbox로 이관 (ADR-002 v2 D3)** |
|
|
15
14
|
|
|
@@ -27,7 +26,6 @@ Claude Code hook 스크립트가 stdin에서 읽는 필드는 Codex에서도 동
|
|
|
27
26
|
`pre_tool_use` / `post_tool_use` 가 Bash 툴에만 발화. ApplyPatch(파일 쓰기)에 대해선 fire 안 함.
|
|
28
27
|
|
|
29
28
|
**영향**:
|
|
30
|
-
- `gate-check.sh` matcher="Skill" — Claude Code에서도 Skill matcher 대상이므로 **영향 없음** (Skill 호출 경로는 Bash shell이 감싸므로 발화)
|
|
31
29
|
- `uncommitted-check.sh` — 파일 저장 후 감지가 필요한 경우 ApplyPatch 이후 상태는 못 잡음. Bash 커밋/저장 경로는 잡힘. Codex `stop` 이벤트(turn 종료) 추가 등록으로 보완 가능 (Phase C 설계 옵션)
|
|
32
30
|
|
|
33
31
|
## 미구현
|
|
@@ -51,20 +51,6 @@ if command -v git &>/dev/null && [ -d "$PROJECT_DIR/.git" ]; then
|
|
|
51
51
|
GIT_STATUS=$(cd "$PROJECT_DIR" && git status --short 2>/dev/null | head -20)
|
|
52
52
|
fi
|
|
53
53
|
|
|
54
|
-
# Gate status 수집
|
|
55
|
-
GATE_SUMMARY="(no gate-status.json)"
|
|
56
|
-
GATE_FILE="$PROJECT_DIR/.claude/gate-status.json"
|
|
57
|
-
if [ -f "$GATE_FILE" ] && command -v jq &>/dev/null; then
|
|
58
|
-
GATE_SUMMARY=$(jq -r '
|
|
59
|
-
"define: \(.define.completed // false)\n" +
|
|
60
|
-
"plan: \(.plan.completed // false)\n" +
|
|
61
|
-
"build: \(.build.completed // false)\n" +
|
|
62
|
-
"verify: \(.verify.completed // false)\n" +
|
|
63
|
-
"review: \(.review.completed // false)\n" +
|
|
64
|
-
"ship: \(.ship.completed // false)"
|
|
65
|
-
' "$GATE_FILE" 2>/dev/null || echo "(parse error)")
|
|
66
|
-
fi
|
|
67
|
-
|
|
68
54
|
# Checkpoint 파일 작성
|
|
69
55
|
cat > "$CHECKPOINT_FILE" <<EOF
|
|
70
56
|
# Checkpoint — $TS
|
|
@@ -82,12 +68,6 @@ cat > "$CHECKPOINT_FILE" <<EOF
|
|
|
82
68
|
$GIT_STATUS
|
|
83
69
|
\`\`\`
|
|
84
70
|
|
|
85
|
-
## Gate Status
|
|
86
|
-
|
|
87
|
-
\`\`\`
|
|
88
|
-
$GATE_SUMMARY
|
|
89
|
-
\`\`\`
|
|
90
|
-
|
|
91
71
|
## Session ID
|
|
92
72
|
- \`$SESSION_ID\`
|
|
93
73
|
- Tool count at snapshot: $count
|
|
@@ -97,8 +77,7 @@ $GATE_SUMMARY
|
|
|
97
77
|
compact 후 다음을 확인:
|
|
98
78
|
1. \`git status\` — 변경 사항 복원
|
|
99
79
|
2. \`docs/SPEC.md\` + \`docs/todo.md\` — 현재 작업 컨텍스트
|
|
100
|
-
3.
|
|
101
|
-
4. 최근 checkpoint: \`ls -t docs/checkpoints/ | head -5\`
|
|
80
|
+
3. 최근 checkpoint: \`ls -t docs/checkpoints/ | head -5\`
|
|
102
81
|
EOF
|
|
103
82
|
|
|
104
83
|
# Counter 리셋
|
|
@@ -29,7 +29,7 @@ fi
|
|
|
29
29
|
if [ "$SPEC_EXISTS" = "true" ]; then
|
|
30
30
|
MSG="Session started. Branch: ${BRANCH:-detached}. SPEC exists — read docs/SPEC.md first (Persistent Anchor). Check Change Log and current Phase before starting work.${COMPACT_WARNING}"
|
|
31
31
|
else
|
|
32
|
-
MSG="Session started. Branch: ${BRANCH:-detached}. No SPEC found
|
|
32
|
+
MSG="Session started. Branch: ${BRANCH:-detached}. No SPEC found.${COMPACT_WARNING}"
|
|
33
33
|
fi
|
|
34
34
|
|
|
35
35
|
cat <<EOF
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
# 검출 항목:
|
|
7
7
|
# 1. SPEC.md의 Verification Checklist에 unchecked 항목 존재
|
|
8
8
|
# 2. todo.md의 unchecked 항목 존재
|
|
9
|
-
# 3.
|
|
10
|
-
# 4. PRD.md Status가 In Progress인데 모든 Phase가 Complete인 경우
|
|
9
|
+
# 3. PRD.md Status가 In Progress인데 모든 Phase가 Complete인 경우
|
|
11
10
|
#
|
|
12
11
|
# Exit codes:
|
|
13
12
|
# 0: drift 없음
|
|
@@ -47,24 +46,7 @@ if [ -f "$DOCS_DIR/todo.md" ]; then
|
|
|
47
46
|
fi
|
|
48
47
|
fi
|
|
49
48
|
|
|
50
|
-
# 3.
|
|
51
|
-
GATE_FILE="$PROJECT_DIR/.claude/gate-status.json"
|
|
52
|
-
if [ -f "$GATE_FILE" ] && [ -f "$DOCS_DIR/SPEC.md" ] && command -v jq &> /dev/null; then
|
|
53
|
-
BUILD_DONE=$(jq -r '.build.completed // false' "$GATE_FILE")
|
|
54
|
-
VERIFY_DONE=$(jq -r '.verify.completed // false' "$GATE_FILE")
|
|
55
|
-
|
|
56
|
-
# SPEC Status가 "Define"인지 확인 (frontmatter 형식만, 본문 파이프라인 설명 제외)
|
|
57
|
-
if grep -qE "^> \*\*Status\*\*:.*Define" "$DOCS_DIR/SPEC.md"; then
|
|
58
|
-
if [ "$BUILD_DONE" = "true" ] || [ "$VERIFY_DONE" = "true" ]; then
|
|
59
|
-
echo "DRIFT: SPEC.md Status='Define'인데 Build/Verify gate가 완료됨" >&2
|
|
60
|
-
DRIFT=$((DRIFT + 1))
|
|
61
|
-
# Ship 게이트에서는 차단 (Build 이후에도 SPEC이 Define이면 안 됨)
|
|
62
|
-
[ "$1" = "ship" ] && BLOCK=1
|
|
63
|
-
fi
|
|
64
|
-
fi
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# 4. Ship 단계에서는 모든 unchecked가 차단
|
|
49
|
+
# 3. Ship 단계에서는 모든 unchecked가 차단
|
|
68
50
|
if [ "$1" = "ship" ] && [ "$DRIFT" -gt 0 ]; then
|
|
69
51
|
BLOCK=1
|
|
70
52
|
fi
|
|
@@ -8,18 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
{PROJECT_RULES}
|
|
10
10
|
|
|
11
|
-
## Workflow Gates
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
Define(/uzys-spec) → Plan(/uzys-plan) → Build(/uzys-build) → Verify(/uzys-test) → Review(/uzys-review) → Ship(/uzys-ship)
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
각 단계 완료 없이 다음 진행 금지. 건너뛰기 시도 시 `tool.execute.before` plugin hook이 throw로 차단.
|
|
18
|
-
|
|
19
|
-
**Hotfix 단축**: Build → Verify → Ship (긴급 수정에 한함)
|
|
20
|
-
|
|
21
|
-
**Executive track**: 6단계 게이트 미적용. 자연어 요청 → strategist + document-skills → 산출물 → 검토.
|
|
22
|
-
|
|
23
11
|
## Session Start
|
|
24
12
|
|
|
25
13
|
매 세션 시작 시:
|
|
@@ -27,11 +15,11 @@ Define(/uzys-spec) → Plan(/uzys-plan) → Build(/uzys-build) → Verify(/uzys-
|
|
|
27
15
|
2. `docs/SPEC.md` 및 `docs/specs/*.md` 재참조 (Persistent Anchor)
|
|
28
16
|
3. `docs/todo.md` 또는 `docs/plans/*-todo.md` 현재 Phase 확인
|
|
29
17
|
|
|
30
|
-
|
|
18
|
+
위 절차를 세션 시작 시 수행한다.
|
|
31
19
|
|
|
32
20
|
## Protected Files (DO NOT EDIT)
|
|
33
21
|
|
|
34
|
-
OpenCode `permission`
|
|
22
|
+
OpenCode `permission` 설정이 1차 방어. LLM 추가 준수:
|
|
35
23
|
|
|
36
24
|
- `.env*`
|
|
37
25
|
- `**/credentials.json`
|
|
@@ -48,19 +36,6 @@ OpenCode `permission` 설정 + plugin `tool.execute.before` 검사가 1차 방
|
|
|
48
36
|
- 세션 시작 시 `git pull` 필수.
|
|
49
37
|
- Conventional Commits — `<type>: <description>` (feat, fix, refactor, docs, test, chore, perf, ci)
|
|
50
38
|
|
|
51
|
-
## Command Reference (OpenCode slash)
|
|
52
|
-
|
|
53
|
-
| Slash | 용도 |
|
|
54
|
-
|-------|------|
|
|
55
|
-
| `/uzys-spec` | Define — 구조화된 스펙 작성 |
|
|
56
|
-
| `/uzys-plan` | Plan — 검증 가능한 작은 단위로 분해 |
|
|
57
|
-
| `/uzys-build` | Build — TDD 점진적 구현 |
|
|
58
|
-
| `/uzys-test` | Verify — 테스트 실행 + 커버리지 |
|
|
59
|
-
| `/uzys-review` | Review — 5축 리뷰 (correctness, readability, architecture, security, performance) |
|
|
60
|
-
| `/uzys-ship` | Ship — 프리런치 체크리스트 + 배포 |
|
|
61
|
-
|
|
62
|
-
OpenCode slash 커맨드는 `.opencode/commands/<name>.md` 파일명이 그대로 슬래시 이름. namespace(`:`) 미사용 — Codex 1차 일관성 + filesystem 호환을 위해 hyphen 채택 (Phase B2 결정, 2026-04-25).
|
|
63
|
-
|
|
64
39
|
## Agents (subagent)
|
|
65
40
|
|
|
66
41
|
| Agent | Mode | 역할 |
|
|
@@ -73,20 +48,10 @@ OpenCode slash 커맨드는 `.opencode/commands/<name>.md` 파일명이 그대
|
|
|
73
48
|
|
|
74
49
|
`opencode.json` `agent.<name>.mode = "subagent"` 로 정의.
|
|
75
50
|
|
|
76
|
-
## Hooks (Plugin lifecycle)
|
|
77
|
-
|
|
78
|
-
OpenCode plugin (`./.opencode/plugin/uzys-harness.ts`)이 다음 3종 hook을 처리:
|
|
79
|
-
|
|
80
|
-
- **`tool.execute.before`** — Claude `PreToolUse` 매핑. gate-check (단계 위반 차단)
|
|
81
|
-
- **`tool.execute.after`** — Claude `PostToolUse` 매핑. spec-drift-check (산출물 검증)
|
|
82
|
-
- **`messageCreated`** filter `role==="user"` — Claude `UserPromptSubmit` 매핑. HITO 카운터
|
|
83
|
-
|
|
84
|
-
자세한 매핑: `docs/decisions/ADR-004-opencode-plugin-mapping.md`.
|
|
85
|
-
|
|
86
51
|
## Experience Accumulation
|
|
87
52
|
|
|
88
53
|
- 검증된 learning만 Rules 승격
|
|
89
|
-
- HITO 로그: `.claude/evals/hito-YYYY-MM-DD.log`
|
|
54
|
+
- HITO 로그: `.claude/evals/hito-YYYY-MM-DD.log`
|
|
90
55
|
|
|
91
56
|
## Context Management
|
|
92
57
|
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
```
|
|
9
9
|
<project>/AGENTS.md ← AGENTS.md.template + CLAUDE.md
|
|
10
10
|
<project>/opencode.json ← opencode.json.template + .mcp.json
|
|
11
|
-
<project>/.opencode/commands/uzys-{spec,plan,build,test,review,ship}.md
|
|
12
|
-
<project>/.opencode/plugins/uzys-harness.ts
|
|
13
11
|
```
|
|
14
12
|
|
|
15
13
|
## 구조
|
|
@@ -18,8 +16,6 @@
|
|
|
18
16
|
|------|------|-------|
|
|
19
17
|
| `AGENTS.md.template` | 프로젝트 root AGENTS.md 마스터 | B1 (현재) / C1 transform |
|
|
20
18
|
| `opencode.json.template` | `opencode.json` 마스터 ($schema + mcp + command + agent + plugin + permission) | B3 |
|
|
21
|
-
| `.opencode/commands/uzys-*.md` | 6 slash command stub. `{COMMAND_BODY_PLACEHOLDER}`가 transform 시 `.claude/commands/uzys/<n>.md` 본문으로 치환 | B1 stub / C2 |
|
|
22
|
-
| `.opencode/plugins/uzys-harness.ts` | Plugin stub (3 hook 골격) | B1 stub / E1 본문 |
|
|
23
19
|
|
|
24
20
|
## 디자인 결정
|
|
25
21
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
| Namespace | Command | 용도 |
|
|
2
2
|
|-----------|---------|------|
|
|
3
|
-
| uzys: | spec, plan, build, test, review, ship | 6-gate 개발 사이클 |
|
|
4
3
|
| ecc: | security-scan, instinct-status, evolve, promote | 보안 스캔, 학습 관리 |
|
|
5
4
|
| imm: | teach, polish, critique, audit, shape, adapt | 디자인 품질 관리 |
|
|
6
5
|
| gsd: | (선택 설치) | 대형 프로젝트 오케스트레이션 |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
- **agent-skills**:
|
|
1
|
+
- **agent-skills**: 개발 워크플로우 백본
|
|
2
2
|
- **Railway**: 배포 자동화 (FastAPI 서비스 + PostgreSQL)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
| Namespace | Command | 용도 |
|
|
2
2
|
|-----------|---------|------|
|
|
3
|
-
| uzys: | spec, plan, build, test, review, ship | 6-gate 개발 사이클 |
|
|
4
3
|
| ecc: | security-scan, instinct-status, evolve, promote | 보안 스캔, 학습 관리 |
|
|
5
4
|
| imm: | teach, polish, critique, audit, shape, adapt | 디자인 품질 관리 |
|
|
6
5
|
| gsd: | (선택 설치) | 대형 프로젝트 오케스트레이션 |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
- **agent-skills**:
|
|
1
|
+
- **agent-skills**: 개발 워크플로우 백본
|
|
2
2
|
- **Railway**: 배포 자동화 (Fastify 서비스 + PostgreSQL)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
| Namespace | Command | 용도 |
|
|
2
2
|
|-----------|---------|------|
|
|
3
|
-
| uzys: | spec, plan, build, test, review, ship | 6-gate 개발 사이클 |
|
|
4
3
|
| ecc: | security-scan, instinct-status, evolve, promote | 보안 스캔, 학습 관리 |
|
|
5
4
|
| imm: | teach, polish, critique, audit, shape, adapt | 디자인 품질 관리 |
|
|
6
5
|
| gsd: | (선택 설치) | 대형 프로젝트 오케스트레이션 |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
- **agent-skills**:
|
|
1
|
+
- **agent-skills**: 개발 워크플로우 백본
|
|
2
2
|
- **supabase-agent-skills**: Supabase 전용 전문 지식 (공식 플러그인, D23)
|
|
3
3
|
- **Vercel CLI** + **Netlify CLI**: 프론트엔드 배포 (Supabase backend + JAMstack hosting)
|
|
4
4
|
- **Supabase CLI**: 프로젝트 link / DB migration / Edge Functions 배포
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
| Namespace | Command | 용도 |
|
|
2
2
|
|-----------|---------|------|
|
|
3
|
-
| uzys: | spec, plan, build, test, review, ship | 6-gate 개발 사이클 |
|
|
4
3
|
| ecc: | security-scan, instinct-status, evolve, promote | 보안 스캔, 학습 관리 |
|
|
5
4
|
| imm: | teach, polish, critique, audit | 디자인 품질 관리 (PySide6 UI) |
|
|
6
5
|
| gsd: | (선택 설치) | 대형 프로젝트 오케스트레이션 |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
- **agent-skills**:
|
|
1
|
+
- **agent-skills**: 개발 워크플로우 백본
|
|
2
2
|
- **Railway**: 배포 자동화 (데이터 파이프라인, API 서빙)
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
자연어
|
|
1
|
+
자연어 워크플로우:
|
|
2
2
|
|
|
3
3
|
```
|
|
4
4
|
요청 -> strategist 에이전트 분석 -> document-skills로 산출물 생성 -> reviewer 검증 -> 전달
|
|
5
5
|
```
|
|
6
6
|
|
|
7
|
-
- 6-gate 개발 워크플로우를 사용하지 않음.
|
|
8
7
|
- 자연어 요청을 받아 strategist 에이전트가 구조화.
|
|
9
8
|
- document-skills가 최종 문서 형식(pptx/docx/xlsx/pdf) 생성.
|
|
10
9
|
- reviewer가 논리 흐름, 설득력, 범위 커버리지 검증.
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
자연어
|
|
1
|
+
자연어 워크플로우:
|
|
2
2
|
|
|
3
3
|
```
|
|
4
4
|
요청 -> Growth/Marketing skill 호출 -> 산출물 생성 -> reviewer 검증 -> 전달
|
|
5
5
|
```
|
|
6
6
|
|
|
7
|
-
- 6-gate 개발 워크플로우를 사용하지 않음.
|
|
8
7
|
- 자연어 요청을 받아 적절한 marketing skill 호출.
|
|
9
8
|
- 시장 조사 → research-summarizer → content-creator → marketing-skills/CRO 흐름.
|
|
10
9
|
- demand-gen은 multi-channel 캠페인 설계 시 호출.
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
- **product-skills (15)**: RICE, PRD, agile PO, UX researcher, UI design system, competitive teardown, landing page generator, SaaS scaffolder, product analytics, experiment designer, product discovery, roadmap communicator, code-to-prd, research summarizer, apple-hig-expert
|
|
3
3
|
- **document-skills (docx/xlsx/pptx)**: PRD/agenda/지표 시트/스폰서 덱
|
|
4
4
|
|
|
5
|
-
**참고**: agent-skills
|
|
5
|
+
**참고**: agent-skills, ECC CL-v2, Impeccable 코딩 스킬은 이 트랙에 미적용.
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
자연어
|
|
1
|
+
자연어 워크플로우:
|
|
2
2
|
|
|
3
3
|
```
|
|
4
4
|
요청 -> PM/Scrum 에이전트 분석 -> pm-skills/product-skills로 산출물 생성 -> reviewer 검증 -> 전달
|
|
5
5
|
```
|
|
6
6
|
|
|
7
|
-
- 6-gate 개발 워크플로우를 사용하지 않음.
|
|
8
7
|
- 자연어 요청을 받아 PM/Scrum/RICE 등 적절한 skill 호출.
|
|
9
8
|
- pm-skills + product-skills 양쪽 도구가 모두 설치되어 있음 — 상황에 맞춰 선택:
|
|
10
9
|
- **pm-skills**: Jira/Confluence/Atlassian admin, scrum master 운영 — 운영 중심
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
| Namespace | Command | 용도 |
|
|
2
2
|
|-----------|---------|------|
|
|
3
|
-
| uzys: | spec, plan, build, test, review, ship | 6-gate 개발 사이클 |
|
|
4
3
|
| ecc: | security-scan, instinct-status, evolve, promote | 보안 스캔, 학습 관리 |
|
|
5
4
|
| imm: | teach, polish, critique, audit, shape, adapt | 디자인 품질 관리 |
|
|
6
5
|
| gsd: | (선택 설치) | 대형 프로젝트 오케스트레이션 |
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
- **agent-skills**:
|
|
1
|
+
- **agent-skills**: 개발 워크플로우 백본
|
|
2
2
|
- **Railway**: 배포 자동화 (FastAPI 서비스 + PostgreSQL)
|