From 1dc2ba90e42e74c85bf38b857145a12d126c8f40 Mon Sep 17 00:00:00 2001 From: toki Date: Thu, 11 Jun 2026 16:40:18 +0900 Subject: [PATCH] refactor: migrate workspace ops to .workspace-ops/ directory --- .clinerules | 43 +----- .cursorrules | 43 +----- .gitignore | 10 +- .workspace-ops/README.md | 21 +++ .workspace-ops/config/entry-files.txt | 5 + .../config}/target-excludes.txt | 0 .../docs}/environments.md | 0 .../docs}/ports.md | 0 .../docs}/remote-runners.md | 0 .workspace-ops/roadmap-sync/locks.yaml | 12 ++ .../rules/common/rules.md | 18 ++- .../rules/project/rules.md | 15 +- .workspace-ops/scripts/sync-entry-files.sh | 20 +++ .../shared/output-format.md | 0 .../shared/quality-evaluation.md | 0 .../shared/scripts/collect-subprojects.sh | 5 +- .../shared/speed-evaluation.md | 0 .../shared/target-discovery.md | 17 ++- .../skills}/daily-subproject-review/SKILL.md | 22 +-- .../scripts/collect.sh | 4 +- .../pre-implementation-review/SKILL.md | 10 +- .../references/checklist.md | 0 .../skills}/weekly-subproject-review/SKILL.md | 20 +-- .../scripts/collect.sh | 8 + .../weekly-subproject-work-summary/SKILL.md | 115 +++++++++++++++ .../scripts/collect.sh | 137 ++++++++++++++++++ .workspace-ops/templates/entry-file.md | 9 ++ .../scripts/collect.sh | 8 - AGENTS.md | 43 +----- CLAUDE.md | 43 +----- GEMINI.md | 43 +----- 31 files changed, 423 insertions(+), 248 deletions(-) create mode 100644 .workspace-ops/README.md create mode 100644 .workspace-ops/config/entry-files.txt rename {.workspace-skills/shared => .workspace-ops/config}/target-excludes.txt (100%) rename {workspace-ops => .workspace-ops/docs}/environments.md (100%) rename {workspace-ops => .workspace-ops/docs}/ports.md (100%) rename {workspace-ops => .workspace-ops/docs}/remote-runners.md (100%) create mode 100644 .workspace-ops/roadmap-sync/locks.yaml rename {.workspace-skills => .workspace-ops}/rules/common/rules.md (62%) rename {.workspace-skills => .workspace-ops}/rules/project/rules.md (74%) create mode 100755 .workspace-ops/scripts/sync-entry-files.sh rename {.workspace-skills => .workspace-ops}/shared/output-format.md (100%) rename {.workspace-skills => .workspace-ops}/shared/quality-evaluation.md (100%) rename {.workspace-skills => .workspace-ops}/shared/scripts/collect-subprojects.sh (93%) rename {.workspace-skills => .workspace-ops}/shared/speed-evaluation.md (100%) rename {.workspace-skills => .workspace-ops}/shared/target-discovery.md (76%) rename {.workspace-skills => .workspace-ops/skills}/daily-subproject-review/SKILL.md (87%) rename {.workspace-skills => .workspace-ops/skills}/daily-subproject-review/scripts/collect.sh (50%) rename {.workspace-skills => .workspace-ops/skills}/pre-implementation-review/SKILL.md (90%) rename {.workspace-skills => .workspace-ops/skills}/pre-implementation-review/references/checklist.md (100%) rename {.workspace-skills => .workspace-ops/skills}/weekly-subproject-review/SKILL.md (87%) create mode 100755 .workspace-ops/skills/weekly-subproject-review/scripts/collect.sh create mode 100644 .workspace-ops/skills/weekly-subproject-work-summary/SKILL.md create mode 100755 .workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh create mode 100644 .workspace-ops/templates/entry-file.md delete mode 100755 .workspace-skills/weekly-subproject-review/scripts/collect.sh diff --git a/.clinerules b/.clinerules index 02c5957..e515591 100644 --- a/.clinerules +++ b/.clinerules @@ -1,38 +1,9 @@ -# 워크스페이스 공통 규칙 +# 워크스페이스 진입 파일 -- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. -- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. -- 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. -- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. -- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. -- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. -- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙, 스킬 라우팅, ignore 정책, 출력 형식, sync 절차를 제품 개발 인프라 품질로 본다. -- sync 커밋은 평가 항목으로 세지 않고, sync로 반영된 실제 내용을 기준으로 평가한다. -- 미커밋 변경은 작업 중인 유효 payload로 보고, 미커밋 상태 자체를 위험/누락/감점 사유로 언급하지 않는다. -- git 작업 중 기존 변경을 되돌리지 않는다. +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. -## 스킬 라우팅 - -아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. -짧은 자연어 요청도 같은 의미로 라우팅한다. - -| 요청 예시 | 요청 성격 | SKILL.md | -|----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | - -## 진입 파일 - -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. - -- `GEMINI.md` -- `CLAUDE.md` -- `AGENTS.md` -- `.cursorrules` -- `.clinerules` +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다. diff --git a/.cursorrules b/.cursorrules index 02c5957..e515591 100644 --- a/.cursorrules +++ b/.cursorrules @@ -1,38 +1,9 @@ -# 워크스페이스 공통 규칙 +# 워크스페이스 진입 파일 -- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. -- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. -- 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. -- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. -- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. -- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. -- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙, 스킬 라우팅, ignore 정책, 출력 형식, sync 절차를 제품 개발 인프라 품질로 본다. -- sync 커밋은 평가 항목으로 세지 않고, sync로 반영된 실제 내용을 기준으로 평가한다. -- 미커밋 변경은 작업 중인 유효 payload로 보고, 미커밋 상태 자체를 위험/누락/감점 사유로 언급하지 않는다. -- git 작업 중 기존 변경을 되돌리지 않는다. +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. -## 스킬 라우팅 - -아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. -짧은 자연어 요청도 같은 의미로 라우팅한다. - -| 요청 예시 | 요청 성격 | SKILL.md | -|----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | - -## 진입 파일 - -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. - -- `GEMINI.md` -- `CLAUDE.md` -- `AGENTS.md` -- `.cursorrules` -- `.clinerules` +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다. diff --git a/.gitignore b/.gitignore index 400aa6b..78ed95e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,9 @@ # by default. Add explicit allow rules for any directory this repo should own. /*/ -# Workspace-owned skills. -!/.workspace-skills/ -!/.workspace-skills/** - -# Workspace-owned operations docs. -!/workspace-ops/ -!/workspace-ops/** +# Workspace-owned operations layer. +!/.workspace-ops/ +!/.workspace-ops/** # Generated or local-only directories should stay ignored even if an allowed # directory is added later. diff --git a/.workspace-ops/README.md b/.workspace-ops/README.md new file mode 100644 index 0000000..50172fb --- /dev/null +++ b/.workspace-ops/README.md @@ -0,0 +1,21 @@ +# Workspace Ops + +이 디렉터리는 workspace root의 운영 도구, 규칙, 스킬, 설정, sync 자료를 관리하는 단일 위치다. +하위 제품 repository와 구분되는 workspace 운영 계층으로 취급한다. + +## 구조 + +- `rules/`: workspace 공통 규칙과 프로젝트 분석 규칙 +- `skills/`: 일간/주간 분석, 주간 작업 요약, 구현 전 점검 skill +- `shared/`: skill들이 공유하는 평가 기준, 출력 형식, 대상 탐색 문서와 스크립트 +- `config/`: workspace 기준 설정 파일 +- `docs/`: 포트, 환경, 원격 runner 같은 운영 문서 +- `roadmap-sync/`: cross-repo roadmap sync lock 자료 +- `scripts/`: workspace 운영 보조 스크립트 + +## 운영 원칙 + +- root의 `AGENTS.md`, `GEMINI.md`, `CLAUDE.md`, `.cursorrules`, `.clinerules`는 호환용 진입 파일이다. +- 실제 규칙 원본은 `.workspace-ops/rules/common/rules.md`에 둔다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 기준으로 한다. +- `.workspace-ops/**`는 하위 프로젝트 분석 대상에서 제외한다. diff --git a/.workspace-ops/config/entry-files.txt b/.workspace-ops/config/entry-files.txt new file mode 100644 index 0000000..f852ee4 --- /dev/null +++ b/.workspace-ops/config/entry-files.txt @@ -0,0 +1,5 @@ +AGENTS.md +GEMINI.md +CLAUDE.md +.cursorrules +.clinerules diff --git a/.workspace-skills/shared/target-excludes.txt b/.workspace-ops/config/target-excludes.txt similarity index 100% rename from .workspace-skills/shared/target-excludes.txt rename to .workspace-ops/config/target-excludes.txt diff --git a/workspace-ops/environments.md b/.workspace-ops/docs/environments.md similarity index 100% rename from workspace-ops/environments.md rename to .workspace-ops/docs/environments.md diff --git a/workspace-ops/ports.md b/.workspace-ops/docs/ports.md similarity index 100% rename from workspace-ops/ports.md rename to .workspace-ops/docs/ports.md diff --git a/workspace-ops/remote-runners.md b/.workspace-ops/docs/remote-runners.md similarity index 100% rename from workspace-ops/remote-runners.md rename to .workspace-ops/docs/remote-runners.md diff --git a/.workspace-ops/roadmap-sync/locks.yaml b/.workspace-ops/roadmap-sync/locks.yaml new file mode 100644 index 0000000..c00fe12 --- /dev/null +++ b/.workspace-ops/roadmap-sync/locks.yaml @@ -0,0 +1,12 @@ +- id: iop:nexo-notification-message-smoke-alignment + locked: iop:agent-roadmap/phase/control-plane-portal-ops/milestones/nexo-notification-message-smoke-alignment.md + rely-on: + - target: nexo:agent-roadmap/phase/product-foundation/milestones/client-validation.md + status: enable + note: IOP Client Integration Clone Adoption 전에 필요한 Nexo/NomadCode signed push smoke evidence가 정리되어 복제 gate가 충족되었다. +- id: nomadcode:external-integration + locked: nomadcode:agent-roadmap/phase/external-integration/milestones/external-integration.md + rely-on: + - target: iop:agent-roadmap/phase/automation-runtime-bridge/milestones/openai-responses-input-surface.md + status: enable + note: IOP OpenAI Responses Input Surface가 /v1/responses handler, metadata contract, response shape, smoke evidence를 완료하고 [완료] archive되어 NomadCode iop-responses 선행 lock 조건이 충족되었다. diff --git a/.workspace-skills/rules/common/rules.md b/.workspace-ops/rules/common/rules.md similarity index 62% rename from .workspace-skills/rules/common/rules.md rename to .workspace-ops/rules/common/rules.md index 02c5957..46c3ac7 100644 --- a/.workspace-skills/rules/common/rules.md +++ b/.workspace-ops/rules/common/rules.md @@ -3,11 +3,11 @@ - 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. - 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. - 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-ops/config/target-excludes.txt`에 없는 경로만 대상으로 한다. - 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 하위 skill을 사용한다. +- `.workspace-ops/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. +- `.tmp/**`, `.antigravitycli/**`, `**/.agent-cache/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. - `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. - 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. - 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. @@ -23,13 +23,15 @@ | 요청 예시 | 요청 성격 | SKILL.md | |----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | +| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-ops/skills/daily-subproject-review/SKILL.md` | +| 주간 작업, 이번주 작업 정리, 지난 일주일 작업 요약, weekly work summary | 이번 주 작업 요약 | `.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md` | +| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-ops/skills/weekly-subproject-review/SKILL.md` | +| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-ops/skills/pre-implementation-review/SKILL.md` | ## 진입 파일 -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. +workspace root의 진입 파일은 호환용 얇은 안내만 담고, 실제 규칙 원본은 이 파일에 둔다. +진입 파일 목록은 `.workspace-ops/config/entry-files.txt`를 기준으로 관리한다. - `GEMINI.md` - `CLAUDE.md` diff --git a/.workspace-skills/rules/project/rules.md b/.workspace-ops/rules/project/rules.md similarity index 74% rename from .workspace-skills/rules/project/rules.md rename to .workspace-ops/rules/project/rules.md index 4e2b72c..9b1d1a7 100644 --- a/.workspace-skills/rules/project/rules.md +++ b/.workspace-ops/rules/project/rules.md @@ -3,7 +3,7 @@ ## 프로젝트 개요 이 workspace는 서로 연관된 하위 Git repository들을 한 루트에서 운영하기 위한 작업 공간이다. -분석 대상은 workspace root 자체가 아니라, root `.gitignore`에서 ignore되는 하위 Git repository 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로다. +분석 대상은 workspace root 자체가 아니라, root `.gitignore`에서 ignore되는 하위 Git repository 중 `.workspace-ops/config/target-excludes.txt`에 없는 경로다. 현재 주요 하위 repository: @@ -18,19 +18,20 @@ ## 분석 대상 탐색 -- `.workspace-skills/shared/target-discovery.md` 규칙으로 root `.gitignore`에서 ignore되는 하위 Git repository를 찾고, `.workspace-skills/shared/target-excludes.txt`에 명시된 경로는 제외한다. +- `.workspace-ops/shared/target-discovery.md` 규칙으로 root `.gitignore`에서 ignore되는 하위 Git repository를 찾고, `.workspace-ops/config/target-excludes.txt`에 명시된 경로는 제외한다. - workspace root 자체의 `.git`은 관리 repository로만 보고 분석 대상 repository로 보지 않는다. -- `.workspace-skills/**`는 운영 도구이므로 분석 대상 repository로 보지 않는다. -- 분석 중 `.workspace-skills/`를 읽는 경우는 skill, shared reference, script를 사용해야 할 때로 제한한다. +- `.workspace-ops/**`는 운영 도구이므로 분석 대상 repository로 보지 않는다. +- 분석 중 `.workspace-ops/`를 읽는 경우는 skill, shared reference, script, rule, config를 사용해야 할 때로 제한한다. - 하위 repository 내부의 `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. ## 스킬 라우팅 | 요청 예시 | 요청 성격 | SKILL.md | |----------|----------|----------| -| 오늘 작업 평가해줘 / 오늘 평가해줘 / 일간 분석 / daily | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘 / 이번주 평가해줘 / 주간 분석 / weekly / cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼? / 구현 전 점검 / 시작 가능 여부 / pre-implementation | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | +| 오늘 작업 평가해줘 / 오늘 평가해줘 / 일간 분석 / daily | 오늘 작업 평가 | `.workspace-ops/skills/daily-subproject-review/SKILL.md` | +| 주간 작업 / 이번주 작업 정리 / 지난 일주일 작업 요약 / weekly work summary | 이번 주 작업 요약 | `.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md` | +| 이번주 작업 평가해줘 / 이번주 평가해줘 / 주간 분석 / weekly / cross-repo 점검 | 이번 주 작업 평가 | `.workspace-ops/skills/weekly-subproject-review/SKILL.md` | +| 이 작업 시작해도 돼? / 구현 전 점검 / 시작 가능 여부 / pre-implementation | 큰 구현 전 점검 | `.workspace-ops/skills/pre-implementation-review/SKILL.md` | ## 출력 기준 diff --git a/.workspace-ops/scripts/sync-entry-files.sh b/.workspace-ops/scripts/sync-entry-files.sh new file mode 100755 index 0000000..a1e62e8 --- /dev/null +++ b/.workspace-ops/scripts/sync-entry-files.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../.." && pwd)}" +ENTRY_FILES="$WORKSPACE_ROOT/.workspace-ops/config/entry-files.txt" +TEMPLATE="$WORKSPACE_ROOT/.workspace-ops/templates/entry-file.md" + +if [[ "$WORKSPACE_ROOT" != "/" ]]; then + WORKSPACE_ROOT="${WORKSPACE_ROOT%/}" +fi + +while IFS= read -r entry || [[ -n "$entry" ]]; do + entry="${entry%%#*}" + entry="${entry#"${entry%%[![:space:]]*}"}" + entry="${entry%"${entry##*[![:space:]]}"}" + [[ -z "$entry" ]] && continue + + cp "$TEMPLATE" "$WORKSPACE_ROOT/$entry" +done < "$ENTRY_FILES" diff --git a/.workspace-skills/shared/output-format.md b/.workspace-ops/shared/output-format.md similarity index 100% rename from .workspace-skills/shared/output-format.md rename to .workspace-ops/shared/output-format.md diff --git a/.workspace-skills/shared/quality-evaluation.md b/.workspace-ops/shared/quality-evaluation.md similarity index 100% rename from .workspace-skills/shared/quality-evaluation.md rename to .workspace-ops/shared/quality-evaluation.md diff --git a/.workspace-skills/shared/scripts/collect-subprojects.sh b/.workspace-ops/shared/scripts/collect-subprojects.sh similarity index 93% rename from .workspace-skills/shared/scripts/collect-subprojects.sh rename to .workspace-ops/shared/scripts/collect-subprojects.sh index b0fba2d..cf4f94a 100755 --- a/.workspace-skills/shared/scripts/collect-subprojects.sh +++ b/.workspace-ops/shared/scripts/collect-subprojects.sh @@ -8,7 +8,7 @@ fi SINCE="${2:-}" UNTIL="${3:-}" -EXCLUDES_FILE="$ROOT/.workspace-skills/shared/target-excludes.txt" +EXCLUDES_FILE="$ROOT/.workspace-ops/config/target-excludes.txt" if [[ -z "$SINCE" ]]; then SINCE="$(date +%Y-%m-%d) 00:00" @@ -50,9 +50,10 @@ repo_paths() { local -a find_args=( "$ROOT" -path "$ROOT/.git" -prune -o - -path "$ROOT/.workspace-skills" -prune -o + -path "$ROOT/.workspace-ops" -prune -o -path "$ROOT/.tmp" -prune -o -path "$ROOT/.antigravitycli" -prune -o + -path "*/.agent-cache" -prune -o -path "*/node_modules" -prune -o -path "*/build" -prune -o -path "*/dist" -prune -o diff --git a/.workspace-skills/shared/speed-evaluation.md b/.workspace-ops/shared/speed-evaluation.md similarity index 100% rename from .workspace-skills/shared/speed-evaluation.md rename to .workspace-ops/shared/speed-evaluation.md diff --git a/.workspace-skills/shared/target-discovery.md b/.workspace-ops/shared/target-discovery.md similarity index 76% rename from .workspace-skills/shared/target-discovery.md rename to .workspace-ops/shared/target-discovery.md index a05483d..53db8f8 100644 --- a/.workspace-skills/shared/target-discovery.md +++ b/.workspace-ops/shared/target-discovery.md @@ -3,12 +3,12 @@ ## 목적 workspace root의 Git 추적 대상이 아니라, root `.gitignore`에서 무시되는 하위 Git repository만 분석 대상으로 찾는다. -단, `.workspace-skills/shared/target-excludes.txt`에 명시된 경로는 분석 대상에서 제외한다. -workspace root 자체와 `.workspace-skills/`는 분석 도구/관리 영역이므로 대상에서 제외한다. +단, `.workspace-ops/config/target-excludes.txt`에 명시된 경로는 분석 대상에서 제외한다. +workspace root 자체와 `.workspace-ops/`는 분석 도구/관리 영역이므로 대상에서 제외한다. ## 명시 제외 목록 -- `.workspace-skills/shared/target-excludes.txt`에 workspace root 기준 상대 경로를 한 줄에 하나씩 적는다. +- `.workspace-ops/config/target-excludes.txt`에 workspace root 기준 상대 경로를 한 줄에 하나씩 적는다. - 빈 줄과 `#` 주석은 무시하고, 앞쪽 `./` 또는 `/`와 뒤쪽 `/`는 같은 경로로 정규화한다. - 예: `mattermost`는 `mattermost/`와 그 하위 repository를 분석 대상에서 제외한다. - 제외 경로는 `find` 단계에서 prune하여 내부 파일을 훑지 않는다. @@ -19,7 +19,7 @@ workspace root 자체와 `.workspace-skills/`는 분석 도구/관리 영역이 if [[ "$ROOT" != "/" ]]; then ROOT="${ROOT%/}" fi -EXCLUDES_FILE="$ROOT/.workspace-skills/shared/target-excludes.txt" +EXCLUDES_FILE="$ROOT/.workspace-ops/config/target-excludes.txt" normalized_excludes() { local exclude @@ -56,9 +56,10 @@ is_excluded_repo() { find_args=( "$ROOT" -path "$ROOT/.git" -prune -o - -path "$ROOT/.workspace-skills" -prune -o + -path "$ROOT/.workspace-ops" -prune -o -path "$ROOT/.tmp" -prune -o -path "$ROOT/.antigravitycli" -prune -o + -path "*/.agent-cache" -prune -o -path "*/node_modules" -prune -o -path "*/build" -prune -o -path "*/dist" -prune -o @@ -87,9 +88,9 @@ find "${find_args[@]}" | - workspace root 자체: 관리 repository로만 보고 제품 분석 대상에서 제외한다. - root `.gitignore`에서 ignore되지 않는 경로: workspace 관리 파일로 보고 하위 프로젝트 분석 대상에서 제외한다. -- `.workspace-skills/shared/target-excludes.txt`에 명시된 경로: 외부 대형 repository 또는 현재 평가 범위 밖의 프로젝트로 보고 제외한다. -- `.workspace-skills/**`: skill/rule/script를 사용할 때만 읽는다. -- `.tmp/**`, `.antigravitycli/**`: workspace 부속 디렉터리로 본다. +- `.workspace-ops/config/target-excludes.txt`에 명시된 경로: 외부 대형 repository 또는 현재 평가 범위 밖의 프로젝트로 보고 제외한다. +- `.workspace-ops/**`: skill/rule/script를 사용할 때만 읽는다. +- `.tmp/**`, `.antigravitycli/**`, `**/.agent-cache/**`: workspace 부속 디렉터리 또는 외부 캐시로 본다. - `**/.git/**`: git metadata는 git 명령으로만 확인한다. - `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`: 생성물 또는 캐시로 본다. - `agent-task/archive/**`, `agent-roadmap/archive/**`: 사용자가 명시적으로 요청한 경우에만 읽는다. diff --git a/.workspace-skills/daily-subproject-review/SKILL.md b/.workspace-ops/skills/daily-subproject-review/SKILL.md similarity index 87% rename from .workspace-skills/daily-subproject-review/SKILL.md rename to .workspace-ops/skills/daily-subproject-review/SKILL.md index be7fbc6..7655dbb 100644 --- a/.workspace-skills/daily-subproject-review/SKILL.md +++ b/.workspace-ops/skills/daily-subproject-review/SKILL.md @@ -30,9 +30,9 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - [ ] 현재 날짜와 timezone - [ ] workspace root가 제품 repository인지, 여러 하위 repository를 품은 상위 폴더인지 -- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 -- [ ] `.workspace-skills/shared/speed-evaluation.md`의 속도 평가 기준 -- [ ] `.workspace-skills/shared/quality-evaluation.md`의 품질 평가 기준 +- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙 +- [ ] `.workspace-ops/shared/speed-evaluation.md`의 속도 평가 기준 +- [ ] `.workspace-ops/shared/quality-evaluation.md`의 품질 평가 기준 - [ ] 하위 repository별 working payload 파일 목록 ## 실행 절차 @@ -42,14 +42,14 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - 사용자가 날짜를 지정하지 않았으면 오늘 00:00부터 다음 날 00:00 전까지를 기준으로 한다. 2. **대상 repository 탐색** - - `.workspace-skills/shared/target-discovery.md`의 규칙으로 하위 `.git` 디렉터리를 찾는다. - - `.workspace-skills/**`는 분석 대상에서 제외한다. + - `.workspace-ops/shared/target-discovery.md`의 규칙으로 하위 `.git` 디렉터리를 찾는다. + - `.workspace-ops/**`는 분석 대상에서 제외한다. 3. **기본 git 상태 수집** - 각 repository에서 `git status --short --branch`, `git branch -vv`, 오늘 커밋 로그와 shortstat을 확인한다. - repo별 오늘 커밋 수를 세고 합산한다. - working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다. - - 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다. + - 필요하면 `.workspace-ops/shared/scripts/collect-subprojects.sh`를 실행한다. 4. **변경 의미 평가** - 커밋을 표준화/하네싱, AI 작업 가능성, 문서/로드맵, 실제 코드 구현, 테스트/검증, 운영 설정으로 분류한다. @@ -58,7 +58,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - repo별 평가를 `sync only`로 끝내지 말고, sync된 내용이 규칙/진입 파일/ignore/output/version/roadmap 중 무엇인지 쓴다. 5. **작업 속도 평가** - - `.workspace-skills/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획 속도를 나눠 본다. + - `.workspace-ops/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획 속도를 나눠 본다. - 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다. - `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다. - 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다. @@ -66,7 +66,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다. 6. **작업 품질 평가** - - `.workspace-skills/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다. + - `.workspace-ops/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다. - AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다. - 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다. - 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다. @@ -78,7 +78,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - archive 디렉터리는 사용자가 명시적으로 요청하지 않으면 읽지 않는다. 8. **결과 작성** - - `.workspace-skills/shared/output-format.md`의 일간 분석 형식을 따른다. + - `.workspace-ops/shared/output-format.md`의 일간 분석 형식을 따른다. - repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 오늘 커밋 칸에 repo별 커밋 수의 합계를 쓴다. - 다음 액션은 3개 이내로 정리한다. @@ -128,7 +128,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 ## 실행 결과 검증 -- [ ] `.workspace-skills/**`가 분석 대상 repository로 포함되지 않았는가 +- [ ] `.workspace-ops/**`가 분석 대상 repository로 포함되지 않았는가 - [ ] 모든 하위 repository의 working payload 파일 목록을 확인했는가 - [ ] 오늘 커밋 또는 working payload가 있는 repository를 누락하지 않았는가 - [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가 @@ -144,5 +144,5 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용 - 커밋 수나 라인 수만으로 생산성을 평가하지 않는다. - 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다. - AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다. -- `.workspace-skills/**`를 하위 프로젝트 작업량에 포함하지 않는다. +- `.workspace-ops/**`를 하위 프로젝트 작업량에 포함하지 않는다. - `agent-task/archive/**`와 `agent-roadmap/archive/**`를 명시 요청 없이 읽지 않는다. diff --git a/.workspace-skills/daily-subproject-review/scripts/collect.sh b/.workspace-ops/skills/daily-subproject-review/scripts/collect.sh similarity index 50% rename from .workspace-skills/daily-subproject-review/scripts/collect.sh rename to .workspace-ops/skills/daily-subproject-review/scripts/collect.sh index 0e3a261..bf3d15f 100755 --- a/.workspace-skills/daily-subproject-review/scripts/collect.sh +++ b/.workspace-ops/skills/daily-subproject-review/scripts/collect.sh @@ -2,8 +2,8 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../../.." && pwd)}" +WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../../../.." && pwd)}" TODAY="${2:-$(date +%Y-%m-%d)}" TOMORROW="$(date -d "$TODAY +1 day" +%Y-%m-%d)" -"$SCRIPT_DIR/../../shared/scripts/collect-subprojects.sh" "$WORKSPACE_ROOT" "$TODAY 00:00" "$TOMORROW 00:00" +"$SCRIPT_DIR/../../../shared/scripts/collect-subprojects.sh" "$WORKSPACE_ROOT" "$TODAY 00:00" "$TOMORROW 00:00" diff --git a/.workspace-skills/pre-implementation-review/SKILL.md b/.workspace-ops/skills/pre-implementation-review/SKILL.md similarity index 90% rename from .workspace-skills/pre-implementation-review/SKILL.md rename to .workspace-ops/skills/pre-implementation-review/SKILL.md index 858f55e..bc28f15 100644 --- a/.workspace-skills/pre-implementation-review/SKILL.md +++ b/.workspace-ops/skills/pre-implementation-review/SKILL.md @@ -30,7 +30,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa - [ ] 구현하려는 기능 또는 변경 범위 - [ ] 관련 repository 후보 -- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 +- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙 - [ ] 관련 repository의 진입 파일과 `agent-roadmap/current.md` - [ ] 선택된 milestone의 `구현 잠금` 상태 @@ -43,7 +43,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa 2. **관련 repository 선정** - 사용자가 지정한 repo를 우선한다. - 지정이 없으면 요청 키워드, 경로, roadmap/current milestone, 최근 변경을 보고 후보를 고른다. - - `.workspace-skills/**`는 후보 repository에서 제외한다. + - `.workspace-ops/**`는 후보 repository에서 제외한다. 3. **규칙과 roadmap 확인** - 각 후보 repo의 진입 파일, `agent-ops/rules/project/rules.md`, `agent-roadmap/current.md`를 확인한다. @@ -59,7 +59,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa - 필요한 테스트, smoke, 문서 갱신, cross-repo sync 여부를 정리한다. 6. **판정 작성** - - `.workspace-skills/shared/output-format.md`의 구현 전 점검 형식을 따른다. + - `.workspace-ops/shared/output-format.md`의 구현 전 점검 형식을 따른다. - 사용자가 구현도 요청하지 않았다면 분석에서 멈춘다. ## 출력 형식 @@ -86,7 +86,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa ## 실행 결과 검증 -- [ ] `.workspace-skills/**`가 구현 대상 repository로 포함되지 않았는가 +- [ ] `.workspace-ops/**`가 구현 대상 repository로 포함되지 않았는가 - [ ] 관련 repository의 규칙과 roadmap/current를 확인했는가 - [ ] 관련 milestone의 구현 잠금 상태를 확인했는가 - [ ] 책임 경계와 테스트 기준을 확인했는가 @@ -96,5 +96,5 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa - 구현 잠금이 걸린 milestone을 사용자 승인 없이 우회하지 않는다. - protocol, schema, API, 파일 구조를 근거 없이 확정하지 않는다. -- `.workspace-skills/**`를 제품 코드 변경 대상으로 삼지 않는다. +- `.workspace-ops/**`를 제품 코드 변경 대상으로 삼지 않는다. - 사전 점검만 요청받은 상태에서 구현을 시작하지 않는다. diff --git a/.workspace-skills/pre-implementation-review/references/checklist.md b/.workspace-ops/skills/pre-implementation-review/references/checklist.md similarity index 100% rename from .workspace-skills/pre-implementation-review/references/checklist.md rename to .workspace-ops/skills/pre-implementation-review/references/checklist.md diff --git a/.workspace-skills/weekly-subproject-review/SKILL.md b/.workspace-ops/skills/weekly-subproject-review/SKILL.md similarity index 87% rename from .workspace-skills/weekly-subproject-review/SKILL.md rename to .workspace-ops/skills/weekly-subproject-review/SKILL.md index 336f608..1c4e452 100644 --- a/.workspace-skills/weekly-subproject-review/SKILL.md +++ b/.workspace-ops/skills/weekly-subproject-review/SKILL.md @@ -29,9 +29,9 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 ## 먼저 확인할 것 -- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 -- [ ] `.workspace-skills/shared/speed-evaluation.md`의 속도 평가 기준 -- [ ] `.workspace-skills/shared/quality-evaluation.md`의 품질 평가 기준 +- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙 +- [ ] `.workspace-ops/shared/speed-evaluation.md`의 속도 평가 기준 +- [ ] `.workspace-ops/shared/quality-evaluation.md`의 품질 평가 기준 - [ ] 하위 repository 목록과 branch tracking 상태 - [ ] 최근 1주 커밋과 큰 변경 파일 - [ ] 관련 `agent-roadmap/current.md`와 활성 milestone @@ -42,14 +42,14 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 - 사용자가 기간을 지정하지 않았으면 최근 7일을 기준으로 한다. 2. **대상 repository 탐색** - - `.workspace-skills/**`를 제외하고 하위 `.git` repository를 찾는다. + - `.workspace-ops/**`를 제외하고 하위 `.git` repository를 찾는다. - focus가 있으면 관련 repository를 우선하되, cross-repo 영향이 있는 sibling repository도 확인한다. 3. **변경 흐름 수집** - repository별 커밋, 변경 파일, branch 상태, working tree 상태를 확인한다. - repo별 최근 1주 커밋 수를 세고 합산한다. - working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다. - - 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다. + - 필요하면 `.workspace-ops/shared/scripts/collect-subprojects.sh`를 실행한다. 4. **cross-repo 관계 분석** - 같은 기능이 여러 repository에 분산되어 있는지 본다. @@ -59,7 +59,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 - 여러 repo에 걸친 표준화/하네싱이 drift 방지, 실행 재현성, AI 작업 가능성에 미친 영향을 본다. 5. **작업 속도 평가** - - `.workspace-skills/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획, 검증 속도를 나눠 본다. + - `.workspace-ops/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획, 검증 속도를 나눠 본다. - 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다. - `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다. - 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다. @@ -67,7 +67,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 - 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다. 6. **작업 품질 평가** - - `.workspace-skills/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다. + - `.workspace-ops/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다. - AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다. - 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다. - 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다. @@ -79,7 +79,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 - archive 디렉터리는 명시 요청 없이 읽지 않는다. 8. **결과 작성** - - `.workspace-skills/shared/output-format.md`의 주간 분석 형식을 따른다. + - `.workspace-ops/shared/output-format.md`의 주간 분석 형식을 따른다. - repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 이번 주 커밋 칸에 repo별 커밋 수의 합계를 쓴다. - 다음 주 초점은 3개 이내로 제안한다. @@ -134,7 +134,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 ## 실행 결과 검증 -- [ ] `.workspace-skills/**`가 분석 대상에 포함되지 않았는가 +- [ ] `.workspace-ops/**`가 분석 대상에 포함되지 않았는가 - [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가 - [ ] sync 커밋을 별도 평가 항목으로 삼지 않고, sync된 내용을 기준으로 분류했는가 - [ ] 작업 속도를 일반 개발자/시니어 개발자 AI 미사용 대비 표로 제시했는가 @@ -150,5 +150,5 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주 - 오래된 잠금 또는 보류 항목을 사용자 확인 없이 해제하지 않는다. - 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다. - AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다. -- `.workspace-skills/**`를 제품 repository로 평가하지 않는다. +- `.workspace-ops/**`를 제품 repository로 평가하지 않는다. - 코드 구현 여부를 확인하지 않고 문서상 완료만으로 완료 판정을 내리지 않는다. diff --git a/.workspace-ops/skills/weekly-subproject-review/scripts/collect.sh b/.workspace-ops/skills/weekly-subproject-review/scripts/collect.sh new file mode 100755 index 0000000..54f8188 --- /dev/null +++ b/.workspace-ops/skills/weekly-subproject-review/scripts/collect.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../../../.." && pwd)}" +SINCE="${2:-7 days ago}" + +"$SCRIPT_DIR/../../../shared/scripts/collect-subprojects.sh" "$WORKSPACE_ROOT" "$SINCE" diff --git a/.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md b/.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md new file mode 100644 index 0000000..62fe2bd --- /dev/null +++ b/.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md @@ -0,0 +1,115 @@ +--- +name: weekly-subproject-work-summary +version: 1.0.0 +description: workspace root 아래 여러 하위 Git repository의 최근 1주 작업 내용을 평가 없이 프로젝트별 bullet 목록으로 요약하는 주간 작업 정리 스킬. 사용자가 "주간 작업", "이번주 작업 정리", "지난 일주일 작업 요약", "weekly work summary"를 요청할 때 사용한다. "이번주 작업 평가"나 "주간 분석"처럼 평가가 필요한 요청은 weekly-subproject-review를 사용한다. +--- + +# Weekly Subproject Work Summary + +## 목적 + +workspace root의 하위 Git repository를 대상으로 최근 1주 작업 내용을 git 기반으로 수집하고, 사용자가 빠르게 읽을 수 있는 프로젝트별 bullet 요약으로 정리한다. +평가, 점수, 속도 비교, 품질 판정은 하지 않는다. + +## 언제 호출할지 + +- 사용자가 "주간 작업", "이번주 작업 정리", "지난 일주일 작업 요약"을 요청할 때 +- 사용자가 평가보다 "무슨 작업이 있었는지"를 프로젝트별로 보고 싶어 할 때 +- 여러 하위 repository의 최근 1주 git 기록을 쉬운 문체로 압축해야 할 때 +- "weekly work summary", "weekly work log"처럼 주간 작업 목록을 요청할 때 + +## 입력 + +- `workspace-root`: 분석할 workspace root. 없으면 현재 작업 디렉터리 +- `since`: 분석 시작일. 없으면 7일 전 +- `until`: 분석 종료일. 없으면 현재 시각 +- `focus`: 특정 repo, 기능, 경계. 선택 + +## 먼저 확인할 것 + +- [ ] `.workspace-ops/shared/target-discovery.md`의 대상 탐색/제외 규칙 +- [ ] 하위 repository 목록 +- [ ] 최근 1주 커밋 제목, 변경 파일 상위 경로, shortstat +- [ ] `--all` 대신 기본적으로 `--branches --remotes` 기준 사용 + +## 실행 절차 + +1. **기간 결정** + - 사용자가 기간을 지정하지 않았으면 최근 7일을 기준으로 한다. + - 현재 날짜와 timezone이 필요한 경우 `date -Is`로 확인한다. + +2. **대상 repository 탐색** + - `.workspace-ops/shared/target-discovery.md` 규칙으로 하위 `.git` repository를 찾는다. + - `.workspace-ops/**`, `.tmp/**`, `.antigravitycli/**`, 생성물/캐시 디렉터리는 분석 대상에서 제외한다. + - `.agent-cache/**` 같은 하위 프로젝트 내부 캐시성 중첩 repository는 사용자가 명시하지 않으면 제외한다. + - root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-ops/config/target-excludes.txt`에 없는 repository만 대상으로 한다. + +3. **git 기록 수집** + - repository별로 최근 1주 커밋 제목을 확인한다. + - checkpoint/stash성 ref가 섞이지 않도록 기본적으로 `git log --branches --remotes`를 사용한다. + - 변경 파일은 상위 경로 중심으로 본다. 세부 archive 로그 파일은 사용자가 명시하지 않으면 읽지 않는다. + - sync 커밋은 "sync 커밋" 자체보다 반영된 운영 규칙, 스킬, 진입 파일, ignore 정책, 실행 스크립트 등 실제 내용을 요약한다. + - 미커밋 상태는 기본 출력에 쓰지 않는다. 사용자가 요청한 경우에만 별도 언급한다. + - 필요하면 `scripts/collect.sh`를 실행한다. + +4. **작업 내용 묶기** + - 같은 repo 안의 커밋을 기능/영역 단위로 묶는다. + - 가능한 묶음 예: + - 앱 셸/화면 + - API/worker/socket/contract + - 테스트/검증/benchmark + - 로드맵/작업 아카이브 + - 운영 규칙/agent-ops/포트 표준화 + - 커밋 수나 라인 수를 중심으로 쓰지 말고, 사용자가 이해할 수 있는 작업 단위로 압축한다. + +5. **출력 작성** + - 프로젝트 이름을 굵은 제목으로 쓰고, 아래에 `- 내용` bullet만 둔다. + - 한 repo당 보통 3-8개 bullet로 제한한다. + - 작업이 거의 없는 repo도 생략하지 말고, 실제 변화가 agent-ops 동기화 중심이면 그렇게 짧게 쓴다. + - 전체 총평, 평가표, 속도표, 품질표, 점수, 위험/누락 섹션은 쓰지 않는다. + +## 문체 규칙 + +- 한국어로 작성한다. +- 어렵지 않은 문장과 짧은 명사형 bullet을 사용한다. +- bullet 끝에 `함`, `했음`, `합니다`, `했습니다`를 붙이지 않는다. +- 좋은 예: + - `- inbound queue ordering을 여러 언어 게이트웨이에 반영` + - `- core HTTP server 파일을 핸들러 단위로 분리` + - `- Flutter/macOS 기반 AppSok 앱 스캐폴딩` +- 피할 예: + - `- inbound queue ordering을 반영함` + - `- core HTTP server 파일을 분리했습니다` + - `- 미커밋 수정 존재` +- "미커밋", "위험", "감점", "누락" 같은 평가성 표현은 사용자가 요청하지 않으면 쓰지 않는다. + +## 출력 형식 + +```markdown +**repo-name** +- 작업 내용 +- 작업 내용 +- 작업 내용 + +**repo-name** +- 작업 내용 +- 작업 내용 +``` + +## 실행 결과 검증 + +- [ ] `.workspace-ops/**`를 하위 프로젝트 작업량에 포함하지 않았는가 +- [ ] `agent-task/archive/**`와 `agent-roadmap/archive/**`를 명시 요청 없이 읽지 않았는가 +- [ ] 평가표, 점수, 속도 비교를 출력하지 않았는가 +- [ ] repo별 bullet 형식으로만 정리했는가 +- [ ] bullet 끝에 `함`, `했음`, `했습니다`가 남아 있지 않은가 +- [ ] 미커밋 상태를 기본 출력에 쓰지 않았는가 + +## 금지 사항 + +- 분석 요청만 받은 상태에서 하위 repository 파일을 수정하지 않는다. +- 주간 작업 요약을 주간 평가로 바꾸지 않는다. +- 커밋 수나 라인 수만으로 작업 의미를 단정하지 않는다. +- checkpoint/stash성 ref를 일반 작업 커밋처럼 요약하지 않는다. +- archive 디렉터리를 사용자가 명시하지 않았는데 읽지 않는다. +- 하위 프로젝트 내부 캐시성 중첩 repository를 일반 관리 프로젝트처럼 요약하지 않는다. diff --git a/.workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh b/.workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh new file mode 100755 index 0000000..81f30e9 --- /dev/null +++ b/.workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../../../.." && pwd)}" +SINCE="${2:-7 days ago}" +UNTIL="${3:-}" +EXCLUDES_FILE="$WORKSPACE_ROOT/.workspace-ops/config/target-excludes.txt" + +if [[ "$WORKSPACE_ROOT" != "/" ]]; then + WORKSPACE_ROOT="${WORKSPACE_ROOT%/}" +fi + +normalized_excludes() { + local exclude + + [[ -f "$EXCLUDES_FILE" ]] || return 0 + + while IFS= read -r exclude || [[ -n "$exclude" ]]; do + exclude="${exclude%%#*}" + exclude="${exclude#"${exclude%%[![:space:]]*}"}" + exclude="${exclude%"${exclude##*[![:space:]]}"}" + exclude="${exclude#./}" + exclude="${exclude#/}" + exclude="${exclude%/}" + + [[ -z "$exclude" ]] && continue + + printf '%s\n' "$exclude" + done < "$EXCLUDES_FILE" +} + +is_excluded_repo() { + local rel="$1" + local exclude + + while IFS= read -r exclude; do + if [[ "$rel" == "$exclude" || "$rel" == "$exclude/"* ]]; then + return 0 + fi + done < <(normalized_excludes) + + return 1 +} + +repo_paths() { + local -a find_args=( + "$WORKSPACE_ROOT" + -path "$WORKSPACE_ROOT/.git" -prune -o + -path "$WORKSPACE_ROOT/.workspace-ops" -prune -o + -path "$WORKSPACE_ROOT/.tmp" -prune -o + -path "$WORKSPACE_ROOT/.antigravitycli" -prune -o + -path "*/.agent-cache" -prune -o + -path "*/node_modules" -prune -o + -path "*/build" -prune -o + -path "*/dist" -prune -o + -path "*/.dart_tool" -prune -o + -path "*/coverage" -prune -o + ) + local exclude + local gitdir + local rel + local repo + + while IFS= read -r exclude; do + find_args+=(-path "$WORKSPACE_ROOT/$exclude" -prune -o) + done < <(normalized_excludes) + + find_args+=(-type d -name .git -print) + + find "${find_args[@]}" | + sort | + while IFS= read -r gitdir; do + repo="$(dirname "$gitdir")" + rel="${repo#$WORKSPACE_ROOT/}" + if git -C "$WORKSPACE_ROOT" check-ignore -q -- "$rel" && ! is_excluded_repo "$rel"; then + printf '%s\n' "$repo" + fi + done +} + +log_args=(--branches --remotes --since="$SINCE") +if [[ -n "$UNTIL" ]]; then + log_args+=(--until="$UNTIL") +fi + +while IFS= read -r repo; do + rel="${repo#$WORKSPACE_ROOT/}" + + echo "## $rel" + printf 'branch: ' + git -C "$repo" branch --show-current + + printf 'commits: ' + git -C "$repo" log "${log_args[@]}" --format='%H' | sort -u | wc -l + + echo "subjects:" + git -C "$repo" log "${log_args[@]}" --date=short --pretty=format:'%h | %ad | %s' + echo + + echo "top paths:" + git -C "$repo" log "${log_args[@]}" --name-only --pretty=format:'' | + awk ' + NF { + n = split($0, a, "/") + if (n == 1) { + p = a[1] + } else if (a[1] == "agent-task" || a[1] == "agent-roadmap" || a[1] == "agent-ops") { + p = a[1] "/" a[2] + } else { + p = a[1] "/" a[2] + } + c[p]++ + } + END { + for (p in c) print c[p], p + } + ' | + sort -nr | + head -n 12 + + echo "shortstat:" + git -C "$repo" log "${log_args[@]}" --shortstat --pretty=tformat: | + awk ' + /files? changed/ { + files += $1 + for (i = 1; i <= NF; i++) { + if ($i == "insertion(+)" || $i == "insertions(+)") ins += $(i - 1) + if ($i == "deletion(-)" || $i == "deletions(-)") del += $(i - 1) + } + } + END { + printf "files_changed_sum=%d insertions=%d deletions=%d\n", files, ins, del + } + ' + echo +done < <(repo_paths) diff --git a/.workspace-ops/templates/entry-file.md b/.workspace-ops/templates/entry-file.md new file mode 100644 index 0000000..e515591 --- /dev/null +++ b/.workspace-ops/templates/entry-file.md @@ -0,0 +1,9 @@ +# 워크스페이스 진입 파일 + +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. + +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다. diff --git a/.workspace-skills/weekly-subproject-review/scripts/collect.sh b/.workspace-skills/weekly-subproject-review/scripts/collect.sh deleted file mode 100755 index d0ce7e4..0000000 --- a/.workspace-skills/weekly-subproject-review/scripts/collect.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -WORKSPACE_ROOT="${1:-$(cd "$SCRIPT_DIR/../../.." && pwd)}" -SINCE="${2:-7 days ago}" - -"$SCRIPT_DIR/../../shared/scripts/collect-subprojects.sh" "$WORKSPACE_ROOT" "$SINCE" diff --git a/AGENTS.md b/AGENTS.md index 02c5957..e515591 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,38 +1,9 @@ -# 워크스페이스 공통 규칙 +# 워크스페이스 진입 파일 -- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. -- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. -- 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. -- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. -- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. -- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. -- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙, 스킬 라우팅, ignore 정책, 출력 형식, sync 절차를 제품 개발 인프라 품질로 본다. -- sync 커밋은 평가 항목으로 세지 않고, sync로 반영된 실제 내용을 기준으로 평가한다. -- 미커밋 변경은 작업 중인 유효 payload로 보고, 미커밋 상태 자체를 위험/누락/감점 사유로 언급하지 않는다. -- git 작업 중 기존 변경을 되돌리지 않는다. +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. -## 스킬 라우팅 - -아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. -짧은 자연어 요청도 같은 의미로 라우팅한다. - -| 요청 예시 | 요청 성격 | SKILL.md | -|----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | - -## 진입 파일 - -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. - -- `GEMINI.md` -- `CLAUDE.md` -- `AGENTS.md` -- `.cursorrules` -- `.clinerules` +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다. diff --git a/CLAUDE.md b/CLAUDE.md index 02c5957..e515591 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,38 +1,9 @@ -# 워크스페이스 공통 규칙 +# 워크스페이스 진입 파일 -- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. -- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. -- 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. -- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. -- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. -- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. -- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙, 스킬 라우팅, ignore 정책, 출력 형식, sync 절차를 제품 개발 인프라 품질로 본다. -- sync 커밋은 평가 항목으로 세지 않고, sync로 반영된 실제 내용을 기준으로 평가한다. -- 미커밋 변경은 작업 중인 유효 payload로 보고, 미커밋 상태 자체를 위험/누락/감점 사유로 언급하지 않는다. -- git 작업 중 기존 변경을 되돌리지 않는다. +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. -## 스킬 라우팅 - -아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. -짧은 자연어 요청도 같은 의미로 라우팅한다. - -| 요청 예시 | 요청 성격 | SKILL.md | -|----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | - -## 진입 파일 - -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. - -- `GEMINI.md` -- `CLAUDE.md` -- `AGENTS.md` -- `.cursorrules` -- `.clinerules` +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다. diff --git a/GEMINI.md b/GEMINI.md index 02c5957..e515591 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -1,38 +1,9 @@ -# 워크스페이스 공통 규칙 +# 워크스페이스 진입 파일 -- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. -- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. -- 기존 하위 repository의 구조와 규칙을 우선한다. -- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더 중 `.workspace-skills/shared/target-excludes.txt`에 없는 경로만 대상으로 한다. -- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다. -- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다. -- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다. -- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다. -- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. -- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다. -- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙, 스킬 라우팅, ignore 정책, 출력 형식, sync 절차를 제품 개발 인프라 품질로 본다. -- sync 커밋은 평가 항목으로 세지 않고, sync로 반영된 실제 내용을 기준으로 평가한다. -- 미커밋 변경은 작업 중인 유효 payload로 보고, 미커밋 상태 자체를 위험/누락/감점 사유로 언급하지 않는다. -- git 작업 중 기존 변경을 되돌리지 않는다. +이 파일은 호환을 위한 얇은 진입 파일이다. +실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다. -## 스킬 라우팅 - -아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. -짧은 자연어 요청도 같은 의미로 라우팅한다. - -| 요청 예시 | 요청 성격 | SKILL.md | -|----------|----------|----------| -| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` | -| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` | -| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` | - -## 진입 파일 - -이 파일은 `agentic-framework/agent-ops/bin/entry-files.sh`의 `AGENT_OPS_ENTRY_FILES` 목록을 기준으로 workspace root의 다음 파일에 동일하게 복사한다. - -- `GEMINI.md` -- `CLAUDE.md` -- `AGENTS.md` -- `.cursorrules` -- `.clinerules` +- workspace 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다. +- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다. +- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다. +- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.