refactor: migrate workspace ops to .workspace-ops/ directory
This commit is contained in:
parent
a5f6d0e132
commit
1dc2ba90e4
31 changed files with 423 additions and 248 deletions
43
.clinerules
43
.clinerules
|
|
@ -1,38 +1,9 @@
|
||||||
# 워크스페이스 공통 규칙
|
# 워크스페이스 진입 파일
|
||||||
|
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
이 파일은 호환을 위한 얇은 진입 파일이다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다.
|
||||||
- 기존 하위 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 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다.
|
||||||
|
- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다.
|
||||||
아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다.
|
||||||
짧은 자연어 요청도 같은 의미로 라우팅한다.
|
- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | 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`
|
|
||||||
|
|
|
||||||
43
.cursorrules
43
.cursorrules
|
|
@ -1,38 +1,9 @@
|
||||||
# 워크스페이스 공통 규칙
|
# 워크스페이스 진입 파일
|
||||||
|
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
이 파일은 호환을 위한 얇은 진입 파일이다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다.
|
||||||
- 기존 하위 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 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다.
|
||||||
|
- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다.
|
||||||
아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다.
|
||||||
짧은 자연어 요청도 같은 의미로 라우팅한다.
|
- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | 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`
|
|
||||||
|
|
|
||||||
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -2,13 +2,9 @@
|
||||||
# by default. Add explicit allow rules for any directory this repo should own.
|
# by default. Add explicit allow rules for any directory this repo should own.
|
||||||
/*/
|
/*/
|
||||||
|
|
||||||
# Workspace-owned skills.
|
# Workspace-owned operations layer.
|
||||||
!/.workspace-skills/
|
!/.workspace-ops/
|
||||||
!/.workspace-skills/**
|
!/.workspace-ops/**
|
||||||
|
|
||||||
# Workspace-owned operations docs.
|
|
||||||
!/workspace-ops/
|
|
||||||
!/workspace-ops/**
|
|
||||||
|
|
||||||
# Generated or local-only directories should stay ignored even if an allowed
|
# Generated or local-only directories should stay ignored even if an allowed
|
||||||
# directory is added later.
|
# directory is added later.
|
||||||
|
|
|
||||||
21
.workspace-ops/README.md
Normal file
21
.workspace-ops/README.md
Normal file
|
|
@ -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/**`는 하위 프로젝트 분석 대상에서 제외한다.
|
||||||
5
.workspace-ops/config/entry-files.txt
Normal file
5
.workspace-ops/config/entry-files.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
AGENTS.md
|
||||||
|
GEMINI.md
|
||||||
|
CLAUDE.md
|
||||||
|
.cursorrules
|
||||||
|
.clinerules
|
||||||
12
.workspace-ops/roadmap-sync/locks.yaml
Normal file
12
.workspace-ops/roadmap-sync/locks.yaml
Normal file
|
|
@ -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 조건이 충족되었다.
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
||||||
- 기존 하위 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`를 먼저 확인한다.
|
- 하위 repository를 변경해야 할 때는 해당 repository의 진입 파일과 `agent-ops/rules/project/rules.md`를 먼저 확인한다.
|
||||||
- 주기 분석, 주간 분석, 구현 전 점검은 `.workspace-skills/` 하위 skill을 사용한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 하위 skill을 사용한다.
|
||||||
- `.workspace-skills/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다.
|
- `.workspace-ops/**`는 workspace 운영 도구이므로 하위 프로젝트 분석 대상에서 제외한다. 단, skill 또는 rule을 사용하기 위해 명시적으로 필요한 파일은 읽을 수 있다.
|
||||||
- `.tmp/**`, `.antigravitycli/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다.
|
- `.tmp/**`, `.antigravitycli/**`, `**/.agent-cache/**`, `**/.git/**`, `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`는 일반 분석 대상에서 제외한다.
|
||||||
- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
|
- `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
|
||||||
- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다.
|
- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다.
|
||||||
- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다.
|
- 작업 평가에서는 제품 기능 구현뿐 아니라 표준화/하네싱, 공통 규칙 전파, drift 방지, 실행 재현성 개선을 핵심 품질 성과로 본다.
|
||||||
|
|
@ -23,13 +23,15 @@
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | SKILL.md |
|
| 요청 예시 | 요청 성격 | SKILL.md |
|
||||||
|----------|----------|----------|
|
|----------|----------|----------|
|
||||||
| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` |
|
| 오늘 작업 평가해줘, 오늘 평가해줘, 일간 리뷰, daily review | 오늘 작업 평가 | `.workspace-ops/skills/daily-subproject-review/SKILL.md` |
|
||||||
| 이번주 작업 평가해줘, 이번주 평가해줘, 주간 분석, weekly review, cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` |
|
| 주간 작업, 이번주 작업 정리, 지난 일주일 작업 요약, weekly work summary | 이번 주 작업 요약 | `.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md` |
|
||||||
| 이 작업 시작해도 돼?, 구현 전 점검, 시작 가능 여부, pre-implementation review | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/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`
|
- `GEMINI.md`
|
||||||
- `CLAUDE.md`
|
- `CLAUDE.md`
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
## 프로젝트 개요
|
## 프로젝트 개요
|
||||||
|
|
||||||
이 workspace는 서로 연관된 하위 Git repository들을 한 루트에서 운영하기 위한 작업 공간이다.
|
이 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:
|
현재 주요 하위 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 root 자체의 `.git`은 관리 repository로만 보고 분석 대상 repository로 보지 않는다.
|
||||||
- `.workspace-skills/**`는 운영 도구이므로 분석 대상 repository로 보지 않는다.
|
- `.workspace-ops/**`는 운영 도구이므로 분석 대상 repository로 보지 않는다.
|
||||||
- 분석 중 `.workspace-skills/`를 읽는 경우는 skill, shared reference, script를 사용해야 할 때로 제한한다.
|
- 분석 중 `.workspace-ops/`를 읽는 경우는 skill, shared reference, script, rule, config를 사용해야 할 때로 제한한다.
|
||||||
- 하위 repository 내부의 `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
|
- 하위 repository 내부의 `agent-task/archive/**`와 `agent-roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
|
||||||
|
|
||||||
## 스킬 라우팅
|
## 스킬 라우팅
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | SKILL.md |
|
| 요청 예시 | 요청 성격 | SKILL.md |
|
||||||
|----------|----------|----------|
|
|----------|----------|----------|
|
||||||
| 오늘 작업 평가해줘 / 오늘 평가해줘 / 일간 분석 / daily | 오늘 작업 평가 | `.workspace-skills/daily-subproject-review/SKILL.md` |
|
| 오늘 작업 평가해줘 / 오늘 평가해줘 / 일간 분석 / daily | 오늘 작업 평가 | `.workspace-ops/skills/daily-subproject-review/SKILL.md` |
|
||||||
| 이번주 작업 평가해줘 / 이번주 평가해줘 / 주간 분석 / weekly / cross-repo 점검 | 이번 주 작업 평가 | `.workspace-skills/weekly-subproject-review/SKILL.md` |
|
| 주간 작업 / 이번주 작업 정리 / 지난 일주일 작업 요약 / weekly work summary | 이번 주 작업 요약 | `.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md` |
|
||||||
| 이 작업 시작해도 돼? / 구현 전 점검 / 시작 가능 여부 / pre-implementation | 큰 구현 전 점검 | `.workspace-skills/pre-implementation-review/SKILL.md` |
|
| 이번주 작업 평가해줘 / 이번주 평가해줘 / 주간 분석 / weekly / cross-repo 점검 | 이번 주 작업 평가 | `.workspace-ops/skills/weekly-subproject-review/SKILL.md` |
|
||||||
|
| 이 작업 시작해도 돼? / 구현 전 점검 / 시작 가능 여부 / pre-implementation | 큰 구현 전 점검 | `.workspace-ops/skills/pre-implementation-review/SKILL.md` |
|
||||||
|
|
||||||
## 출력 기준
|
## 출력 기준
|
||||||
|
|
||||||
20
.workspace-ops/scripts/sync-entry-files.sh
Executable file
20
.workspace-ops/scripts/sync-entry-files.sh
Executable file
|
|
@ -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"
|
||||||
|
|
@ -8,7 +8,7 @@ fi
|
||||||
|
|
||||||
SINCE="${2:-}"
|
SINCE="${2:-}"
|
||||||
UNTIL="${3:-}"
|
UNTIL="${3:-}"
|
||||||
EXCLUDES_FILE="$ROOT/.workspace-skills/shared/target-excludes.txt"
|
EXCLUDES_FILE="$ROOT/.workspace-ops/config/target-excludes.txt"
|
||||||
|
|
||||||
if [[ -z "$SINCE" ]]; then
|
if [[ -z "$SINCE" ]]; then
|
||||||
SINCE="$(date +%Y-%m-%d) 00:00"
|
SINCE="$(date +%Y-%m-%d) 00:00"
|
||||||
|
|
@ -50,9 +50,10 @@ repo_paths() {
|
||||||
local -a find_args=(
|
local -a find_args=(
|
||||||
"$ROOT"
|
"$ROOT"
|
||||||
-path "$ROOT/.git" -prune -o
|
-path "$ROOT/.git" -prune -o
|
||||||
-path "$ROOT/.workspace-skills" -prune -o
|
-path "$ROOT/.workspace-ops" -prune -o
|
||||||
-path "$ROOT/.tmp" -prune -o
|
-path "$ROOT/.tmp" -prune -o
|
||||||
-path "$ROOT/.antigravitycli" -prune -o
|
-path "$ROOT/.antigravitycli" -prune -o
|
||||||
|
-path "*/.agent-cache" -prune -o
|
||||||
-path "*/node_modules" -prune -o
|
-path "*/node_modules" -prune -o
|
||||||
-path "*/build" -prune -o
|
-path "*/build" -prune -o
|
||||||
-path "*/dist" -prune -o
|
-path "*/dist" -prune -o
|
||||||
|
|
@ -3,12 +3,12 @@
|
||||||
## 목적
|
## 목적
|
||||||
|
|
||||||
workspace root의 Git 추적 대상이 아니라, root `.gitignore`에서 무시되는 하위 Git repository만 분석 대상으로 찾는다.
|
workspace root의 Git 추적 대상이 아니라, root `.gitignore`에서 무시되는 하위 Git repository만 분석 대상으로 찾는다.
|
||||||
단, `.workspace-skills/shared/target-excludes.txt`에 명시된 경로는 분석 대상에서 제외한다.
|
단, `.workspace-ops/config/target-excludes.txt`에 명시된 경로는 분석 대상에서 제외한다.
|
||||||
workspace root 자체와 `.workspace-skills/`는 분석 도구/관리 영역이므로 대상에서 제외한다.
|
workspace root 자체와 `.workspace-ops/`는 분석 도구/관리 영역이므로 대상에서 제외한다.
|
||||||
|
|
||||||
## 명시 제외 목록
|
## 명시 제외 목록
|
||||||
|
|
||||||
- `.workspace-skills/shared/target-excludes.txt`에 workspace root 기준 상대 경로를 한 줄에 하나씩 적는다.
|
- `.workspace-ops/config/target-excludes.txt`에 workspace root 기준 상대 경로를 한 줄에 하나씩 적는다.
|
||||||
- 빈 줄과 `#` 주석은 무시하고, 앞쪽 `./` 또는 `/`와 뒤쪽 `/`는 같은 경로로 정규화한다.
|
- 빈 줄과 `#` 주석은 무시하고, 앞쪽 `./` 또는 `/`와 뒤쪽 `/`는 같은 경로로 정규화한다.
|
||||||
- 예: `mattermost`는 `mattermost/`와 그 하위 repository를 분석 대상에서 제외한다.
|
- 예: `mattermost`는 `mattermost/`와 그 하위 repository를 분석 대상에서 제외한다.
|
||||||
- 제외 경로는 `find` 단계에서 prune하여 내부 파일을 훑지 않는다.
|
- 제외 경로는 `find` 단계에서 prune하여 내부 파일을 훑지 않는다.
|
||||||
|
|
@ -19,7 +19,7 @@ workspace root 자체와 `.workspace-skills/`는 분석 도구/관리 영역이
|
||||||
if [[ "$ROOT" != "/" ]]; then
|
if [[ "$ROOT" != "/" ]]; then
|
||||||
ROOT="${ROOT%/}"
|
ROOT="${ROOT%/}"
|
||||||
fi
|
fi
|
||||||
EXCLUDES_FILE="$ROOT/.workspace-skills/shared/target-excludes.txt"
|
EXCLUDES_FILE="$ROOT/.workspace-ops/config/target-excludes.txt"
|
||||||
|
|
||||||
normalized_excludes() {
|
normalized_excludes() {
|
||||||
local exclude
|
local exclude
|
||||||
|
|
@ -56,9 +56,10 @@ is_excluded_repo() {
|
||||||
find_args=(
|
find_args=(
|
||||||
"$ROOT"
|
"$ROOT"
|
||||||
-path "$ROOT/.git" -prune -o
|
-path "$ROOT/.git" -prune -o
|
||||||
-path "$ROOT/.workspace-skills" -prune -o
|
-path "$ROOT/.workspace-ops" -prune -o
|
||||||
-path "$ROOT/.tmp" -prune -o
|
-path "$ROOT/.tmp" -prune -o
|
||||||
-path "$ROOT/.antigravitycli" -prune -o
|
-path "$ROOT/.antigravitycli" -prune -o
|
||||||
|
-path "*/.agent-cache" -prune -o
|
||||||
-path "*/node_modules" -prune -o
|
-path "*/node_modules" -prune -o
|
||||||
-path "*/build" -prune -o
|
-path "*/build" -prune -o
|
||||||
-path "*/dist" -prune -o
|
-path "*/dist" -prune -o
|
||||||
|
|
@ -87,9 +88,9 @@ find "${find_args[@]}" |
|
||||||
|
|
||||||
- workspace root 자체: 관리 repository로만 보고 제품 분석 대상에서 제외한다.
|
- workspace root 자체: 관리 repository로만 보고 제품 분석 대상에서 제외한다.
|
||||||
- root `.gitignore`에서 ignore되지 않는 경로: workspace 관리 파일로 보고 하위 프로젝트 분석 대상에서 제외한다.
|
- root `.gitignore`에서 ignore되지 않는 경로: workspace 관리 파일로 보고 하위 프로젝트 분석 대상에서 제외한다.
|
||||||
- `.workspace-skills/shared/target-excludes.txt`에 명시된 경로: 외부 대형 repository 또는 현재 평가 범위 밖의 프로젝트로 보고 제외한다.
|
- `.workspace-ops/config/target-excludes.txt`에 명시된 경로: 외부 대형 repository 또는 현재 평가 범위 밖의 프로젝트로 보고 제외한다.
|
||||||
- `.workspace-skills/**`: skill/rule/script를 사용할 때만 읽는다.
|
- `.workspace-ops/**`: skill/rule/script를 사용할 때만 읽는다.
|
||||||
- `.tmp/**`, `.antigravitycli/**`: workspace 부속 디렉터리로 본다.
|
- `.tmp/**`, `.antigravitycli/**`, `**/.agent-cache/**`: workspace 부속 디렉터리 또는 외부 캐시로 본다.
|
||||||
- `**/.git/**`: git metadata는 git 명령으로만 확인한다.
|
- `**/.git/**`: git metadata는 git 명령으로만 확인한다.
|
||||||
- `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`: 생성물 또는 캐시로 본다.
|
- `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`: 생성물 또는 캐시로 본다.
|
||||||
- `agent-task/archive/**`, `agent-roadmap/archive/**`: 사용자가 명시적으로 요청한 경우에만 읽는다.
|
- `agent-task/archive/**`, `agent-roadmap/archive/**`: 사용자가 명시적으로 요청한 경우에만 읽는다.
|
||||||
|
|
@ -30,9 +30,9 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
|
|
||||||
- [ ] 현재 날짜와 timezone
|
- [ ] 현재 날짜와 timezone
|
||||||
- [ ] workspace root가 제품 repository인지, 여러 하위 repository를 품은 상위 폴더인지
|
- [ ] workspace root가 제품 repository인지, 여러 하위 repository를 품은 상위 폴더인지
|
||||||
- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙
|
- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙
|
||||||
- [ ] `.workspace-skills/shared/speed-evaluation.md`의 속도 평가 기준
|
- [ ] `.workspace-ops/shared/speed-evaluation.md`의 속도 평가 기준
|
||||||
- [ ] `.workspace-skills/shared/quality-evaluation.md`의 품질 평가 기준
|
- [ ] `.workspace-ops/shared/quality-evaluation.md`의 품질 평가 기준
|
||||||
- [ ] 하위 repository별 working payload 파일 목록
|
- [ ] 하위 repository별 working payload 파일 목록
|
||||||
|
|
||||||
## 실행 절차
|
## 실행 절차
|
||||||
|
|
@ -42,14 +42,14 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
- 사용자가 날짜를 지정하지 않았으면 오늘 00:00부터 다음 날 00:00 전까지를 기준으로 한다.
|
- 사용자가 날짜를 지정하지 않았으면 오늘 00:00부터 다음 날 00:00 전까지를 기준으로 한다.
|
||||||
|
|
||||||
2. **대상 repository 탐색**
|
2. **대상 repository 탐색**
|
||||||
- `.workspace-skills/shared/target-discovery.md`의 규칙으로 하위 `.git` 디렉터리를 찾는다.
|
- `.workspace-ops/shared/target-discovery.md`의 규칙으로 하위 `.git` 디렉터리를 찾는다.
|
||||||
- `.workspace-skills/**`는 분석 대상에서 제외한다.
|
- `.workspace-ops/**`는 분석 대상에서 제외한다.
|
||||||
|
|
||||||
3. **기본 git 상태 수집**
|
3. **기본 git 상태 수집**
|
||||||
- 각 repository에서 `git status --short --branch`, `git branch -vv`, 오늘 커밋 로그와 shortstat을 확인한다.
|
- 각 repository에서 `git status --short --branch`, `git branch -vv`, 오늘 커밋 로그와 shortstat을 확인한다.
|
||||||
- repo별 오늘 커밋 수를 세고 합산한다.
|
- repo별 오늘 커밋 수를 세고 합산한다.
|
||||||
- working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다.
|
- working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다.
|
||||||
- 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다.
|
- 필요하면 `.workspace-ops/shared/scripts/collect-subprojects.sh`를 실행한다.
|
||||||
|
|
||||||
4. **변경 의미 평가**
|
4. **변경 의미 평가**
|
||||||
- 커밋을 표준화/하네싱, AI 작업 가능성, 문서/로드맵, 실제 코드 구현, 테스트/검증, 운영 설정으로 분류한다.
|
- 커밋을 표준화/하네싱, AI 작업 가능성, 문서/로드맵, 실제 코드 구현, 테스트/검증, 운영 설정으로 분류한다.
|
||||||
|
|
@ -58,7 +58,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
- repo별 평가를 `sync only`로 끝내지 말고, sync된 내용이 규칙/진입 파일/ignore/output/version/roadmap 중 무엇인지 쓴다.
|
- repo별 평가를 `sync only`로 끝내지 말고, sync된 내용이 규칙/진입 파일/ignore/output/version/roadmap 중 무엇인지 쓴다.
|
||||||
|
|
||||||
5. **작업 속도 평가**
|
5. **작업 속도 평가**
|
||||||
- `.workspace-skills/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획 속도를 나눠 본다.
|
- `.workspace-ops/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획 속도를 나눠 본다.
|
||||||
- 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다.
|
- 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다.
|
||||||
- `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다.
|
- `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다.
|
||||||
- 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다.
|
- 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다.
|
||||||
|
|
@ -66,7 +66,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
- 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다.
|
- 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다.
|
||||||
|
|
||||||
6. **작업 품질 평가**
|
6. **작업 품질 평가**
|
||||||
- `.workspace-skills/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다.
|
- `.workspace-ops/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다.
|
||||||
- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다.
|
- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다.
|
||||||
- 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다.
|
- 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다.
|
||||||
- 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다.
|
- 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다.
|
||||||
|
|
@ -78,7 +78,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
- archive 디렉터리는 사용자가 명시적으로 요청하지 않으면 읽지 않는다.
|
- archive 디렉터리는 사용자가 명시적으로 요청하지 않으면 읽지 않는다.
|
||||||
|
|
||||||
8. **결과 작성**
|
8. **결과 작성**
|
||||||
- `.workspace-skills/shared/output-format.md`의 일간 분석 형식을 따른다.
|
- `.workspace-ops/shared/output-format.md`의 일간 분석 형식을 따른다.
|
||||||
- repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 오늘 커밋 칸에 repo별 커밋 수의 합계를 쓴다.
|
- repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 오늘 커밋 칸에 repo별 커밋 수의 합계를 쓴다.
|
||||||
- 다음 액션은 3개 이내로 정리한다.
|
- 다음 액션은 3개 이내로 정리한다.
|
||||||
|
|
||||||
|
|
@ -128,7 +128,7 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
|
|
||||||
## 실행 결과 검증
|
## 실행 결과 검증
|
||||||
|
|
||||||
- [ ] `.workspace-skills/**`가 분석 대상 repository로 포함되지 않았는가
|
- [ ] `.workspace-ops/**`가 분석 대상 repository로 포함되지 않았는가
|
||||||
- [ ] 모든 하위 repository의 working payload 파일 목록을 확인했는가
|
- [ ] 모든 하위 repository의 working payload 파일 목록을 확인했는가
|
||||||
- [ ] 오늘 커밋 또는 working payload가 있는 repository를 누락하지 않았는가
|
- [ ] 오늘 커밋 또는 working payload가 있는 repository를 누락하지 않았는가
|
||||||
- [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가
|
- [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가
|
||||||
|
|
@ -144,5 +144,5 @@ workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용
|
||||||
- 커밋 수나 라인 수만으로 생산성을 평가하지 않는다.
|
- 커밋 수나 라인 수만으로 생산성을 평가하지 않는다.
|
||||||
- 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다.
|
- 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다.
|
||||||
- AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다.
|
- AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다.
|
||||||
- `.workspace-skills/**`를 하위 프로젝트 작업량에 포함하지 않는다.
|
- `.workspace-ops/**`를 하위 프로젝트 작업량에 포함하지 않는다.
|
||||||
- `agent-task/archive/**`와 `agent-roadmap/archive/**`를 명시 요청 없이 읽지 않는다.
|
- `agent-task/archive/**`와 `agent-roadmap/archive/**`를 명시 요청 없이 읽지 않는다.
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
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)}"
|
TODAY="${2:-$(date +%Y-%m-%d)}"
|
||||||
TOMORROW="$(date -d "$TODAY +1 day" +%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"
|
||||||
|
|
@ -30,7 +30,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa
|
||||||
|
|
||||||
- [ ] 구현하려는 기능 또는 변경 범위
|
- [ ] 구현하려는 기능 또는 변경 범위
|
||||||
- [ ] 관련 repository 후보
|
- [ ] 관련 repository 후보
|
||||||
- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙
|
- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙
|
||||||
- [ ] 관련 repository의 진입 파일과 `agent-roadmap/current.md`
|
- [ ] 관련 repository의 진입 파일과 `agent-roadmap/current.md`
|
||||||
- [ ] 선택된 milestone의 `구현 잠금` 상태
|
- [ ] 선택된 milestone의 `구현 잠금` 상태
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa
|
||||||
2. **관련 repository 선정**
|
2. **관련 repository 선정**
|
||||||
- 사용자가 지정한 repo를 우선한다.
|
- 사용자가 지정한 repo를 우선한다.
|
||||||
- 지정이 없으면 요청 키워드, 경로, roadmap/current milestone, 최근 변경을 보고 후보를 고른다.
|
- 지정이 없으면 요청 키워드, 경로, roadmap/current milestone, 최근 변경을 보고 후보를 고른다.
|
||||||
- `.workspace-skills/**`는 후보 repository에서 제외한다.
|
- `.workspace-ops/**`는 후보 repository에서 제외한다.
|
||||||
|
|
||||||
3. **규칙과 roadmap 확인**
|
3. **규칙과 roadmap 확인**
|
||||||
- 각 후보 repo의 진입 파일, `agent-ops/rules/project/rules.md`, `agent-roadmap/current.md`를 확인한다.
|
- 각 후보 repo의 진입 파일, `agent-ops/rules/project/rules.md`, `agent-roadmap/current.md`를 확인한다.
|
||||||
|
|
@ -59,7 +59,7 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa
|
||||||
- 필요한 테스트, smoke, 문서 갱신, cross-repo sync 여부를 정리한다.
|
- 필요한 테스트, smoke, 문서 갱신, cross-repo sync 여부를 정리한다.
|
||||||
|
|
||||||
6. **판정 작성**
|
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를 확인했는가
|
- [ ] 관련 repository의 규칙과 roadmap/current를 확인했는가
|
||||||
- [ ] 관련 milestone의 구현 잠금 상태를 확인했는가
|
- [ ] 관련 milestone의 구현 잠금 상태를 확인했는가
|
||||||
- [ ] 책임 경계와 테스트 기준을 확인했는가
|
- [ ] 책임 경계와 테스트 기준을 확인했는가
|
||||||
|
|
@ -96,5 +96,5 @@ description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roa
|
||||||
|
|
||||||
- 구현 잠금이 걸린 milestone을 사용자 승인 없이 우회하지 않는다.
|
- 구현 잠금이 걸린 milestone을 사용자 승인 없이 우회하지 않는다.
|
||||||
- protocol, schema, API, 파일 구조를 근거 없이 확정하지 않는다.
|
- protocol, schema, API, 파일 구조를 근거 없이 확정하지 않는다.
|
||||||
- `.workspace-skills/**`를 제품 코드 변경 대상으로 삼지 않는다.
|
- `.workspace-ops/**`를 제품 코드 변경 대상으로 삼지 않는다.
|
||||||
- 사전 점검만 요청받은 상태에서 구현을 시작하지 않는다.
|
- 사전 점검만 요청받은 상태에서 구현을 시작하지 않는다.
|
||||||
|
|
@ -29,9 +29,9 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
|
|
||||||
## 먼저 확인할 것
|
## 먼저 확인할 것
|
||||||
|
|
||||||
- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙
|
- [ ] `.workspace-ops/shared/target-discovery.md`의 제외 규칙
|
||||||
- [ ] `.workspace-skills/shared/speed-evaluation.md`의 속도 평가 기준
|
- [ ] `.workspace-ops/shared/speed-evaluation.md`의 속도 평가 기준
|
||||||
- [ ] `.workspace-skills/shared/quality-evaluation.md`의 품질 평가 기준
|
- [ ] `.workspace-ops/shared/quality-evaluation.md`의 품질 평가 기준
|
||||||
- [ ] 하위 repository 목록과 branch tracking 상태
|
- [ ] 하위 repository 목록과 branch tracking 상태
|
||||||
- [ ] 최근 1주 커밋과 큰 변경 파일
|
- [ ] 최근 1주 커밋과 큰 변경 파일
|
||||||
- [ ] 관련 `agent-roadmap/current.md`와 활성 milestone
|
- [ ] 관련 `agent-roadmap/current.md`와 활성 milestone
|
||||||
|
|
@ -42,14 +42,14 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
- 사용자가 기간을 지정하지 않았으면 최근 7일을 기준으로 한다.
|
- 사용자가 기간을 지정하지 않았으면 최근 7일을 기준으로 한다.
|
||||||
|
|
||||||
2. **대상 repository 탐색**
|
2. **대상 repository 탐색**
|
||||||
- `.workspace-skills/**`를 제외하고 하위 `.git` repository를 찾는다.
|
- `.workspace-ops/**`를 제외하고 하위 `.git` repository를 찾는다.
|
||||||
- focus가 있으면 관련 repository를 우선하되, cross-repo 영향이 있는 sibling repository도 확인한다.
|
- focus가 있으면 관련 repository를 우선하되, cross-repo 영향이 있는 sibling repository도 확인한다.
|
||||||
|
|
||||||
3. **변경 흐름 수집**
|
3. **변경 흐름 수집**
|
||||||
- repository별 커밋, 변경 파일, branch 상태, working tree 상태를 확인한다.
|
- repository별 커밋, 변경 파일, branch 상태, working tree 상태를 확인한다.
|
||||||
- repo별 최근 1주 커밋 수를 세고 합산한다.
|
- repo별 최근 1주 커밋 수를 세고 합산한다.
|
||||||
- working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다.
|
- working tree 변경은 미커밋 위험이 아니라 작업 중인 유효 payload로 보고 변경 파일 내용을 평가에 포함한다.
|
||||||
- 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다.
|
- 필요하면 `.workspace-ops/shared/scripts/collect-subprojects.sh`를 실행한다.
|
||||||
|
|
||||||
4. **cross-repo 관계 분석**
|
4. **cross-repo 관계 분석**
|
||||||
- 같은 기능이 여러 repository에 분산되어 있는지 본다.
|
- 같은 기능이 여러 repository에 분산되어 있는지 본다.
|
||||||
|
|
@ -59,7 +59,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
- 여러 repo에 걸친 표준화/하네싱이 drift 방지, 실행 재현성, AI 작업 가능성에 미친 영향을 본다.
|
- 여러 repo에 걸친 표준화/하네싱이 drift 방지, 실행 재현성, AI 작업 가능성에 미친 영향을 본다.
|
||||||
|
|
||||||
5. **작업 속도 평가**
|
5. **작업 속도 평가**
|
||||||
- `.workspace-skills/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획, 검증 속도를 나눠 본다.
|
- `.workspace-ops/shared/speed-evaluation.md`의 기준으로 속도 종합평가, 표준화/하네싱, AI 작업 가능성, 제품 진척, 정렬/기획, 검증 속도를 나눠 본다.
|
||||||
- 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다.
|
- 작업 속도 표의 첫 행은 반드시 `속도 종합평가`로 작성한다.
|
||||||
- `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다.
|
- `속도 종합평가`의 판단 칸에는 속도 등급, 10점 만점 점수, 보정 이유를 한 문장으로 쓴다.
|
||||||
- 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다.
|
- 일반 개발자 AI 미사용 대비와 시니어 개발자 AI 미사용 대비 추정 배율을 표로 제시한다.
|
||||||
|
|
@ -67,7 +67,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
- 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다.
|
- 제품 구현 근거가 약하면 `제품 진척` 축만 판정 보류로 두고, 표준화/하네싱 속도는 별도 성과로 인정한다.
|
||||||
|
|
||||||
6. **작업 품질 평가**
|
6. **작업 품질 평가**
|
||||||
- `.workspace-skills/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다.
|
- `.workspace-ops/shared/quality-evaluation.md`의 기준으로 표준화/하네싱, AI 작업 가능성, 일관성/드리프트 방지, 실행 가능성, 구현/제품 품질, 검증/감사 가능성, 원천/반영 구분을 평가한다.
|
||||||
- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다.
|
- AI-first 개발에서는 agent가 읽고 실행할 수 있는 규칙/스킬/라우팅/ignore/output 기준을 제품 개발 인프라 품질로 평가한다.
|
||||||
- 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다.
|
- 제품 기능 구현이 없다는 이유만으로 표준화/하네싱 작업의 품질 점수를 낮추지 않는다.
|
||||||
- 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다.
|
- 작업 품질 표의 첫 행은 반드시 `작업 품질 종합평가`로 작성한다.
|
||||||
|
|
@ -79,7 +79,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
- archive 디렉터리는 명시 요청 없이 읽지 않는다.
|
- archive 디렉터리는 명시 요청 없이 읽지 않는다.
|
||||||
|
|
||||||
8. **결과 작성**
|
8. **결과 작성**
|
||||||
- `.workspace-skills/shared/output-format.md`의 주간 분석 형식을 따른다.
|
- `.workspace-ops/shared/output-format.md`의 주간 분석 형식을 따른다.
|
||||||
- repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 이번 주 커밋 칸에 repo별 커밋 수의 합계를 쓴다.
|
- repo별 요약 표의 첫 데이터 행은 반드시 `커밋 총합` row로 작성하고, 이번 주 커밋 칸에 repo별 커밋 수의 합계를 쓴다.
|
||||||
- 다음 주 초점은 3개 이내로 제안한다.
|
- 다음 주 초점은 3개 이내로 제안한다.
|
||||||
|
|
||||||
|
|
@ -134,7 +134,7 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
|
|
||||||
## 실행 결과 검증
|
## 실행 결과 검증
|
||||||
|
|
||||||
- [ ] `.workspace-skills/**`가 분석 대상에 포함되지 않았는가
|
- [ ] `.workspace-ops/**`가 분석 대상에 포함되지 않았는가
|
||||||
- [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가
|
- [ ] repo별 요약 표 최상단에 `커밋 총합` row를 넣고 repo별 커밋 수 합계를 썼는가
|
||||||
- [ ] sync 커밋을 별도 평가 항목으로 삼지 않고, sync된 내용을 기준으로 분류했는가
|
- [ ] sync 커밋을 별도 평가 항목으로 삼지 않고, sync된 내용을 기준으로 분류했는가
|
||||||
- [ ] 작업 속도를 일반 개발자/시니어 개발자 AI 미사용 대비 표로 제시했는가
|
- [ ] 작업 속도를 일반 개발자/시니어 개발자 AI 미사용 대비 표로 제시했는가
|
||||||
|
|
@ -150,5 +150,5 @@ description: workspace root 아래 여러 하위 Git repository의 최근 1주
|
||||||
- 오래된 잠금 또는 보류 항목을 사용자 확인 없이 해제하지 않는다.
|
- 오래된 잠금 또는 보류 항목을 사용자 확인 없이 해제하지 않는다.
|
||||||
- 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다.
|
- 제품 기능 구현만을 진척 또는 품질의 기준으로 삼지 않는다.
|
||||||
- AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다.
|
- AI 미사용 대비 배율을 개인 성과나 확정 소요 시간처럼 단정하지 않는다.
|
||||||
- `.workspace-skills/**`를 제품 repository로 평가하지 않는다.
|
- `.workspace-ops/**`를 제품 repository로 평가하지 않는다.
|
||||||
- 코드 구현 여부를 확인하지 않고 문서상 완료만으로 완료 판정을 내리지 않는다.
|
- 코드 구현 여부를 확인하지 않고 문서상 완료만으로 완료 판정을 내리지 않는다.
|
||||||
8
.workspace-ops/skills/weekly-subproject-review/scripts/collect.sh
Executable file
8
.workspace-ops/skills/weekly-subproject-review/scripts/collect.sh
Executable file
|
|
@ -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"
|
||||||
115
.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md
Normal file
115
.workspace-ops/skills/weekly-subproject-work-summary/SKILL.md
Normal file
|
|
@ -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를 일반 관리 프로젝트처럼 요약하지 않는다.
|
||||||
137
.workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh
Executable file
137
.workspace-ops/skills/weekly-subproject-work-summary/scripts/collect.sh
Executable file
|
|
@ -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)
|
||||||
9
.workspace-ops/templates/entry-file.md
Normal file
9
.workspace-ops/templates/entry-file.md
Normal file
|
|
@ -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`에 둔다.
|
||||||
|
|
@ -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"
|
|
||||||
43
AGENTS.md
43
AGENTS.md
|
|
@ -1,38 +1,9 @@
|
||||||
# 워크스페이스 공통 규칙
|
# 워크스페이스 진입 파일
|
||||||
|
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
이 파일은 호환을 위한 얇은 진입 파일이다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다.
|
||||||
- 기존 하위 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 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다.
|
||||||
|
- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다.
|
||||||
아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다.
|
||||||
짧은 자연어 요청도 같은 의미로 라우팅한다.
|
- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | 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`
|
|
||||||
|
|
|
||||||
43
CLAUDE.md
43
CLAUDE.md
|
|
@ -1,38 +1,9 @@
|
||||||
# 워크스페이스 공통 규칙
|
# 워크스페이스 진입 파일
|
||||||
|
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
이 파일은 호환을 위한 얇은 진입 파일이다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다.
|
||||||
- 기존 하위 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 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다.
|
||||||
|
- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다.
|
||||||
아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다.
|
||||||
짧은 자연어 요청도 같은 의미로 라우팅한다.
|
- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | 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`
|
|
||||||
|
|
|
||||||
43
GEMINI.md
43
GEMINI.md
|
|
@ -1,38 +1,9 @@
|
||||||
# 워크스페이스 공통 규칙
|
# 워크스페이스 진입 파일
|
||||||
|
|
||||||
- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다.
|
이 파일은 호환을 위한 얇은 진입 파일이다.
|
||||||
- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다.
|
실제 workspace 운영 규칙은 `.workspace-ops/rules/common/rules.md`를 먼저 읽고 따른다.
|
||||||
- 기존 하위 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 운영 도구, 룰, 스킬, 설정, sync 자료는 `.workspace-ops/`에서만 관리한다.
|
||||||
|
- 분석 대상 탐색은 `.workspace-ops/shared/target-discovery.md`와 `.workspace-ops/config/target-excludes.txt`를 따른다.
|
||||||
아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다.
|
- 주기 분석, 주간 작업 요약, 주간 분석, 구현 전 점검은 `.workspace-ops/skills/` 아래 해당 `SKILL.md`를 사용한다.
|
||||||
짧은 자연어 요청도 같은 의미로 라우팅한다.
|
- 루트 진입 파일 목록은 `.workspace-ops/config/entry-files.txt`에 둔다.
|
||||||
|
|
||||||
| 요청 예시 | 요청 성격 | 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`
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue