commit 3e13ade7c419b551101ab35d352876a1089a8744 Author: toki Date: Sun May 24 08:58:27 2026 +0900 Initial commit: workspace configuration files diff --git a/.clinerules b/.clinerules new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/.clinerules @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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` diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/.cursorrules @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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` diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4288866 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Track root-level files in this workspace repo, but ignore root directories +# by default. Add explicit allow rules for any directory this repo should own. +/*/ + +# Workspace-owned skills. +!/.workspace-skills/ +!/.workspace-skills/** + +# Generated or local-only directories should stay ignored even if an allowed +# directory is added later. +**/.git/ +**/node_modules/ +**/build/ +**/dist/ +**/.dart_tool/ +**/coverage/ diff --git a/.workspace-skills/daily-subproject-review/SKILL.md b/.workspace-skills/daily-subproject-review/SKILL.md new file mode 100644 index 0000000..4c58755 --- /dev/null +++ b/.workspace-skills/daily-subproject-review/SKILL.md @@ -0,0 +1,98 @@ +--- +name: daily-subproject-review +version: 1.0.0 +description: workspace root 아래 여러 하위 Git repository의 오늘 작업 내용을 짧게 평가하는 일간 분석 스킬. 사용자가 "오늘 작업 평가", "하위 프로젝트 분석", "일간 리뷰", "daily review"를 요청할 때 사용한다. +--- + +# Daily Subproject Review + +## 목적 + +workspace root의 하위 Git repository를 대상으로 오늘의 작업 내용을 짧게 평가한다. +커밋 수보다 변경의 의미, cross-repo 영향, 위험/누락, 다음 액션을 우선한다. + +## 언제 호출할지 + +- 사용자가 오늘 작업 내용 평가를 요청할 때 +- 여러 하위 프로젝트의 일간 진행 상황을 요약해야 할 때 +- cross-repo 동기화나 책임 경계 변화가 있었는지 빠르게 확인해야 할 때 +- 다음 작업 우선순위를 하루 단위로 정리해야 할 때 + +## 입력 + +- `workspace-root`: 분석할 workspace root. 없으면 현재 작업 디렉터리 +- `date`: 분석 기준 날짜. 없으면 현재 날짜 +- `timezone`: 날짜 경계 기준 timezone. 없으면 현재 shell timezone +- `include-archives`: archive 디렉터리 읽기 여부. 기본값은 `false` + +## 먼저 확인할 것 + +- [ ] 현재 날짜와 timezone +- [ ] workspace root가 제품 repository인지, 여러 하위 repository를 품은 상위 폴더인지 +- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 +- [ ] 하위 repository별 working tree 상태 + +## 실행 절차 + +1. **기준 시각 확인** + - `date -Is`로 현재 날짜와 timezone을 확인한다. + - 사용자가 날짜를 지정하지 않았으면 오늘 00:00부터 다음 날 00:00 전까지를 기준으로 한다. + +2. **대상 repository 탐색** + - `.workspace-skills/shared/target-discovery.md`의 규칙으로 하위 `.git` 디렉터리를 찾는다. + - `.workspace-skills/**`는 분석 대상에서 제외한다. + +3. **기본 git 상태 수집** + - 각 repository에서 `git status --short --branch`, `git branch -vv`, 오늘 커밋 로그와 shortstat을 확인한다. + - 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다. + +4. **변경 의미 평가** + - 커밋을 동기화, 문서/로드맵, 실제 코드 구현, 테스트/검증, 운영 설정으로 분류한다. + - 반복 sync 커밋은 실제 진척과 분리해서 본다. + +5. **위험과 누락 확인** + - 공통 정책이 각 repository에 반영되지 않은 항목을 찾는다. + - 로드맵과 실제 코드 상태가 충돌하는지 확인한다. + - archive 디렉터리는 사용자가 명시적으로 요청하지 않으면 읽지 않는다. + +6. **결과 작성** + - `.workspace-skills/shared/output-format.md`의 일간 분석 형식을 따른다. + - 다음 액션은 3개 이내로 정리한다. + +## 출력 형식 + +```markdown +## 총평 + +<오늘 작업의 의미와 짧은 평가> + +## repo별 요약 + +| repo | 오늘 커밋 | 작업 성격 | 평가 | +|------|----------:|-----------|------| + +## 위험/누락 + +- <확인할 항목> + +## 다음 액션 + +1. <다음 작업> +2. <다음 작업> +3. <다음 작업> +``` + +## 실행 결과 검증 + +- [ ] `.workspace-skills/**`가 분석 대상 repository로 포함되지 않았는가 +- [ ] 모든 하위 repository의 working tree 상태를 확인했는가 +- [ ] 오늘 커밋이 없는 repository도 누락하지 않았는가 +- [ ] sync 커밋과 실질 변경을 구분했는가 +- [ ] archive 디렉터리를 명시 요청 없이 읽지 않았는가 + +## 금지 사항 + +- 분석 요청만 받은 상태에서 하위 repository 파일을 수정하지 않는다. +- 커밋 수나 라인 수만으로 생산성을 평가하지 않는다. +- `.workspace-skills/**`를 하위 프로젝트 작업량에 포함하지 않는다. +- `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`를 명시 요청 없이 읽지 않는다. diff --git a/.workspace-skills/daily-subproject-review/scripts/collect.sh b/.workspace-skills/daily-subproject-review/scripts/collect.sh new file mode 100755 index 0000000..0e3a261 --- /dev/null +++ b/.workspace-skills/daily-subproject-review/scripts/collect.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && 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" diff --git a/.workspace-skills/pre-implementation-review/SKILL.md b/.workspace-skills/pre-implementation-review/SKILL.md new file mode 100644 index 0000000..2f433f4 --- /dev/null +++ b/.workspace-skills/pre-implementation-review/SKILL.md @@ -0,0 +1,100 @@ +--- +name: pre-implementation-review +version: 1.0.0 +description: 큰 구현을 시작하기 전에 관련 하위 Git repository, roadmap/current milestone, 구현 잠금, 선행 조건, 책임 경계, 테스트 기준을 확인해 진행 가능 여부를 판정하는 사전 점검 스킬. 사용자가 "구현 전 점검", "이 작업 시작해도 돼?", "pre-implementation review"를 요청할 때 사용한다. +--- + +# Pre-Implementation Review + +## 목적 + +큰 구현을 시작하기 전에 관련 repository와 milestone을 확인해 지금 구현으로 내려가도 되는지 판정한다. +결과는 `진행 가능`, `조건부 진행`, `보류` 중 하나로 낸다. + +## 언제 호출할지 + +- 사용자가 특정 기능 구현을 시작하기 전에 점검을 요청할 때 +- 여러 repository에 걸친 변경을 시작하기 전에 책임 경계를 확인해야 할 때 +- roadmap의 구현 잠금 또는 선행 milestone이 구현을 막는지 확인해야 할 때 +- 테스트/검증 기준이 충분한지 구현 전에 확인해야 할 때 + +## 입력 + +- `workspace-root`: 분석할 workspace root. 없으면 현재 작업 디렉터리 +- `feature`: 구현하려는 기능 또는 변경 설명 +- `candidate-repos`: 사용자가 지정한 관련 repository 목록. 선택 +- `candidate-paths`: 관련 파일 또는 경로. 선택 +- `include-archives`: archive 디렉터리 읽기 여부. 기본값은 `false` + +## 먼저 확인할 것 + +- [ ] 구현하려는 기능 또는 변경 범위 +- [ ] 관련 repository 후보 +- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 +- [ ] 관련 repository의 진입 파일과 `agent-ops/roadmap/current.md` +- [ ] 선택된 milestone의 `구현 잠금` 상태 + +## 실행 절차 + +1. **요청 범위 정리** + - feature, 관련 repo, 관련 경로, 기대 산출물을 짧게 정리한다. + - 범위가 너무 넓으면 구현 단위를 나눌 후보를 제시한다. + +2. **관련 repository 선정** + - 사용자가 지정한 repo를 우선한다. + - 지정이 없으면 요청 키워드, 경로, roadmap/current milestone, 최근 변경을 보고 후보를 고른다. + - `.workspace-skills/**`는 후보 repository에서 제외한다. + +3. **규칙과 roadmap 확인** + - 각 후보 repo의 진입 파일, `agent-ops/rules/project/rules.md`, `agent-ops/roadmap/current.md`를 확인한다. + - 활성 milestone 중 관련 문서만 읽는다. + - archive milestone은 사용자가 명시적으로 요청하지 않으면 읽지 않는다. + +4. **구현 잠금과 선행 조건 판정** + - 관련 milestone의 `구현 잠금`이 `잠금`이거나 섹션이 없으면 구현 보류 또는 조건부 진행으로 판정한다. + - 책임 경계, API/protocol, schema, 테스트 기준이 확정되어 있는지 확인한다. + +5. **변경 범위와 테스트 기준 확인** + - 어떤 repo가 소유하는 변경인지 분리한다. + - 필요한 테스트, smoke, 문서 갱신, cross-repo sync 여부를 정리한다. + +6. **판정 작성** + - `.workspace-skills/shared/output-format.md`의 구현 전 점검 형식을 따른다. + - 사용자가 구현도 요청하지 않았다면 분석에서 멈춘다. + +## 출력 형식 + +```markdown +## 판정 + +<진행 가능 | 조건부 진행 | 보류> + +## 근거 + +- <근거> + +## 막는 항목 + +- <구현 전 결정해야 할 항목> + +## 구현 시작 조건 + +1. <조건> +2. <조건> +3. <조건> +``` + +## 실행 결과 검증 + +- [ ] `.workspace-skills/**`가 구현 대상 repository로 포함되지 않았는가 +- [ ] 관련 repository의 규칙과 roadmap/current를 확인했는가 +- [ ] 관련 milestone의 구현 잠금 상태를 확인했는가 +- [ ] 책임 경계와 테스트 기준을 확인했는가 +- [ ] 사용자가 구현을 명시하지 않은 경우 파일을 수정하지 않았는가 + +## 금지 사항 + +- 구현 잠금이 걸린 milestone을 사용자 승인 없이 우회하지 않는다. +- protocol, schema, API, 파일 구조를 근거 없이 확정하지 않는다. +- `.workspace-skills/**`를 제품 코드 변경 대상으로 삼지 않는다. +- 사전 점검만 요청받은 상태에서 구현을 시작하지 않는다. diff --git a/.workspace-skills/pre-implementation-review/references/checklist.md b/.workspace-skills/pre-implementation-review/references/checklist.md new file mode 100644 index 0000000..a6b78e0 --- /dev/null +++ b/.workspace-skills/pre-implementation-review/references/checklist.md @@ -0,0 +1,16 @@ +# Pre-Implementation Checklist + +## 판정 기준 + +- `진행 가능`: 관련 milestone이 구현 가능한 수준으로 구체화되어 있고, 구현 잠금이 없거나 해제되어 있으며, 책임 경계와 테스트 기준이 확인됨 +- `조건부 진행`: 작은 문서 보정, 테스트 기준 보강, repo 소유권 확인 같은 낮은 위험의 선행 작업만 남음 +- `보류`: 구현 잠금, 선행 milestone 미완료, API/protocol/schema 미확정, 책임 경계 충돌이 있음 + +## 확인 질문 + +- 이 변경의 owner repository는 어디인가? +- sibling repository에 contract 변경이 필요한가? +- 현재 활성 milestone 안의 작업인가? +- `구현 잠금`이 있으면 해제 근거가 문서에 남아 있는가? +- 테스트 또는 smoke 기준이 구현 전에 설명 가능한가? +- 문서 sync와 코드 구현 순서가 충돌하지 않는가? diff --git a/.workspace-skills/rules/common/rules.md b/.workspace-skills/rules/common/rules.md new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/.workspace-skills/rules/common/rules.md @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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` diff --git a/.workspace-skills/rules/project/rules.md b/.workspace-skills/rules/project/rules.md new file mode 100644 index 0000000..255175b --- /dev/null +++ b/.workspace-skills/rules/project/rules.md @@ -0,0 +1,40 @@ +# 워크스페이스 프로젝트 규칙 + +## 프로젝트 개요 + +이 workspace는 서로 연관된 하위 Git repository들을 한 루트에서 운영하기 위한 작업 공간이다. +분석 대상은 workspace root 자체가 아니라, root `.gitignore`에서 ignore되는 하위 Git repository다. + +현재 주요 하위 repository: + +| 경로 | 성격 | +|------|------| +| `agentic-framework/` | 공통 `agent-ops` 규칙과 skill 공급원 | +| `dart-app-core/` | Dart 앱 공통 기반 | +| `iop/` | 실행, 모델, agent runtime, Edge/Node 계층 | +| `nomadcode/` | 개발 workflow/product shell | +| `oto/` | build/deploy domain agent 후보 | +| `proto-socket/` | proto-socket transport 구현 | + +## 분석 대상 탐색 + +- `.workspace-skills/shared/target-discovery.md` 규칙으로 root `.gitignore`에서 ignore되는 하위 Git repository를 찾는다. +- workspace root 자체의 `.git`은 관리 repository로만 보고 분석 대상 repository로 보지 않는다. +- `.workspace-skills/**`는 운영 도구이므로 분석 대상 repository로 보지 않는다. +- 분석 중 `.workspace-skills/`를 읽는 경우는 skill, shared reference, script를 사용해야 할 때로 제한한다. +- 하위 repository 내부의 `agent-task/archive/**`와 `agent-ops/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` | + +## 출력 기준 + +- 커밋 수와 라인 수는 보조 지표로만 사용한다. +- 실제 평가는 변경의 의미, cross-repo 영향, 책임 경계, 위험/누락, 다음 액션을 기준으로 한다. +- 최종 답변에는 사용자가 바로 행동할 수 있는 다음 액션을 포함한다. +- 단순 분석 요청에서는 파일을 수정하지 않는다. diff --git a/.workspace-skills/shared/output-format.md b/.workspace-skills/shared/output-format.md new file mode 100644 index 0000000..53be1d9 --- /dev/null +++ b/.workspace-skills/shared/output-format.md @@ -0,0 +1,73 @@ +# Output Format + +## 일간 분석 + +```markdown +## 총평 + +<오늘 작업의 의미와 점수 또는 짧은 판단> + +## repo별 요약 + +| repo | 오늘 커밋 | 작업 성격 | 평가 | +|------|----------:|-----------|------| + +## 좋은 점 + +- <핵심 성과> + +## 위험/누락 + +- <확인할 위험> + +## 다음 액션 + +1. <가장 중요한 다음 작업> +2. <두 번째 작업> +3. <세 번째 작업> +``` + +## 주간 분석 + +```markdown +## 주간 총평 + +<방향 정렬, 속도, 위험에 대한 평가> + +## cross-repo 흐름 + +| 흐름 | 관련 repo | 상태 | 다음 결정 | +|------|-----------|------|-----------| + +## 불일치/중복 + +- <로드맵, 문서, 구현 사이의 불일치> + +## 다음 주 초점 + +1. <초점> +2. <초점> +3. <초점> +``` + +## 구현 전 점검 + +```markdown +## 판정 + +<진행 가능 | 조건부 진행 | 보류> + +## 근거 + +- <마일스톤, 구현 잠금, 선행 조건, 책임 경계 근거> + +## 막는 항목 + +- <구현 전 결정해야 할 항목> + +## 구현 시작 조건 + +1. <조건> +2. <조건> +3. <조건> +``` diff --git a/.workspace-skills/shared/scripts/collect-subprojects.sh b/.workspace-skills/shared/scripts/collect-subprojects.sh new file mode 100755 index 0000000..ae16005 --- /dev/null +++ b/.workspace-skills/shared/scripts/collect-subprojects.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT="${1:-$(pwd)}" +SINCE="${2:-}" +UNTIL="${3:-}" + +if [[ -z "$SINCE" ]]; then + SINCE="$(date +%Y-%m-%d) 00:00" +fi + +repo_paths() { + find "$ROOT" \ + -path "$ROOT/.git" -prune -o \ + -path "$ROOT/.workspace-skills" -prune -o \ + -path "$ROOT/.tmp" -prune -o \ + -path "$ROOT/.antigravitycli" -prune -o \ + -path "*/node_modules" -prune -o \ + -path "*/build" -prune -o \ + -path "*/dist" -prune -o \ + -path "*/.dart_tool" -prune -o \ + -path "*/coverage" -prune -o \ + -type d -name .git -print | + sort | + while IFS= read -r gitdir; do + repo="$(dirname "$gitdir")" + rel="${repo#$ROOT/}" + if git -C "$ROOT" check-ignore -q -- "$rel"; then + printf '%s\n' "$repo" + fi + done +} + +while IFS= read -r repo; do + rel="${repo#$ROOT/}" + echo "## $rel" + git -C "$repo" status --short --branch + git -C "$repo" branch -vv + + if [[ -n "$UNTIL" ]]; then + git -C "$repo" log --since="$SINCE" --until="$UNTIL" --date=iso --pretty=format:'%h | %ad | %an | %s' --shortstat + else + git -C "$repo" log --since="$SINCE" --date=iso --pretty=format:'%h | %ad | %an | %s' --shortstat + fi + + echo +done < <(repo_paths) diff --git a/.workspace-skills/shared/target-discovery.md b/.workspace-skills/shared/target-discovery.md new file mode 100644 index 0000000..6c0b60b --- /dev/null +++ b/.workspace-skills/shared/target-discovery.md @@ -0,0 +1,50 @@ +# Target Discovery + +## 목적 + +workspace root의 Git 추적 대상이 아니라, root `.gitignore`에서 무시되는 하위 Git repository만 분석 대상으로 찾는다. +workspace root 자체와 `.workspace-skills/`는 분석 도구/관리 영역이므로 대상에서 제외한다. + +## 기본 명령 + +```bash +find "$ROOT" \ + -path "$ROOT/.git" -prune -o \ + -path "$ROOT/.workspace-skills" -prune -o \ + -path "$ROOT/.tmp" -prune -o \ + -path "$ROOT/.antigravitycli" -prune -o \ + -path "*/node_modules" -prune -o \ + -path "*/build" -prune -o \ + -path "*/dist" -prune -o \ + -path "*/.dart_tool" -prune -o \ + -path "*/coverage" -prune -o \ + -type d -name .git -print | + sort | + while IFS= read -r gitdir; do + repo="$(dirname "$gitdir")" + rel="${repo#$ROOT/}" + if git -C "$ROOT" check-ignore -q -- "$rel"; then + printf '%s\n' "$repo" + fi + done +``` + +## 제외 규칙 + +- workspace root 자체: 관리 repository로만 보고 제품 분석 대상에서 제외한다. +- root `.gitignore`에서 ignore되지 않는 경로: workspace 관리 파일로 보고 하위 프로젝트 분석 대상에서 제외한다. +- `.workspace-skills/**`: skill/rule/script를 사용할 때만 읽는다. +- `.tmp/**`, `.antigravitycli/**`: workspace 부속 디렉터리로 본다. +- `**/.git/**`: git metadata는 git 명령으로만 확인한다. +- `**/node_modules/**`, `**/build/**`, `**/dist/**`, `**/.dart_tool/**`, `**/coverage/**`: 생성물 또는 캐시로 본다. +- `agent-task/archive/**`, `agent-ops/roadmap/archive/**`: 사용자가 명시적으로 요청한 경우에만 읽는다. + +## repository별 기본 확인 + +각 repository에서 다음을 확인한다. + +```bash +git status --short --branch +git branch -vv +git log --since="" --until="" --date=iso --pretty=format:'%h | %ad | %an | %s' --shortstat +``` diff --git a/.workspace-skills/weekly-subproject-review/SKILL.md b/.workspace-skills/weekly-subproject-review/SKILL.md new file mode 100644 index 0000000..7f3d5d6 --- /dev/null +++ b/.workspace-skills/weekly-subproject-review/SKILL.md @@ -0,0 +1,99 @@ +--- +name: weekly-subproject-review +version: 1.0.0 +description: workspace root 아래 여러 하위 Git repository의 최근 1주 흐름, cross-repo 의존성, 로드맵/구현 불일치, 책임 경계 위험을 평가하는 주간 분석 스킬. 사용자가 "주간 분석", "weekly review", "cross-repo 점검"을 요청할 때 사용한다. +--- + +# Weekly Subproject Review + +## 목적 + +하위 repository들의 최근 1주 흐름을 묶어서 평가한다. +일간 분석보다 cross-repo 의존성, 중복 계획, 책임 경계 충돌, 오래 남은 잠금/보류 항목을 더 깊게 본다. + +## 언제 호출할지 + +- 사용자가 주간 하위 프로젝트 분석을 요청할 때 +- 여러 repository의 로드맵이 같은 방향을 보고 있는지 확인해야 할 때 +- 다음 주 구현 우선순위를 정하기 전에 전체 흐름을 점검할 때 +- cross-repo 경계나 중복 작업이 늘어난 것 같을 때 + +## 입력 + +- `workspace-root`: 분석할 workspace root. 없으면 현재 작업 디렉터리 +- `since`: 분석 시작일. 없으면 7일 전 +- `until`: 분석 종료일. 없으면 현재 시각 +- `focus`: 특정 repo, 기능, 경계. 선택 +- `include-archives`: archive 디렉터리 읽기 여부. 기본값은 `false` + +## 먼저 확인할 것 + +- [ ] `.workspace-skills/shared/target-discovery.md`의 제외 규칙 +- [ ] 하위 repository 목록과 branch tracking 상태 +- [ ] 최근 1주 커밋과 큰 변경 파일 +- [ ] 관련 `agent-ops/roadmap/current.md`와 활성 milestone + +## 실행 절차 + +1. **기간 결정** + - 사용자가 기간을 지정하지 않았으면 최근 7일을 기준으로 한다. + +2. **대상 repository 탐색** + - `.workspace-skills/**`를 제외하고 하위 `.git` repository를 찾는다. + - focus가 있으면 관련 repository를 우선하되, cross-repo 영향이 있는 sibling repository도 확인한다. + +3. **변경 흐름 수집** + - repository별 커밋, 변경 파일, branch 상태, working tree 상태를 확인한다. + - 필요하면 `.workspace-skills/shared/scripts/collect-subprojects.sh`를 실행한다. + +4. **cross-repo 관계 분석** + - 같은 기능이 여러 repository에 분산되어 있는지 본다. + - 책임 경계가 겹치거나 반대로 비어 있는 영역을 찾는다. + - 공통 `agent-ops` sync와 실제 제품 변경을 분리한다. + +5. **로드맵/구현 불일치 확인** + - 활성 milestone과 실제 변경이 맞는지 확인한다. + - 구현 잠금이 오래 남았거나 잠금 없이 구현으로 내려간 흔적이 있는지 본다. + - archive 디렉터리는 명시 요청 없이 읽지 않는다. + +6. **결과 작성** + - `.workspace-skills/shared/output-format.md`의 주간 분석 형식을 따른다. + - 다음 주 초점은 3개 이내로 제안한다. + +## 출력 형식 + +```markdown +## 주간 총평 + +<방향 정렬, 속도, 위험 평가> + +## cross-repo 흐름 + +| 흐름 | 관련 repo | 상태 | 다음 결정 | +|------|-----------|------|-----------| + +## 불일치/중복 + +- <확인한 문제> + +## 다음 주 초점 + +1. <초점> +2. <초점> +3. <초점> +``` + +## 실행 결과 검증 + +- [ ] `.workspace-skills/**`가 분석 대상에 포함되지 않았는가 +- [ ] 공통 sync와 실제 제품 변경을 구분했는가 +- [ ] cross-repo 책임 경계와 의존성을 최소 1회 점검했는가 +- [ ] 활성 roadmap/milestone과 실제 변경의 관계를 확인했는가 +- [ ] archive 디렉터리를 명시 요청 없이 읽지 않았는가 + +## 금지 사항 + +- 주간 분석 중 근거 없이 새 roadmap 항목을 만들지 않는다. +- 오래된 잠금 또는 보류 항목을 사용자 확인 없이 해제하지 않는다. +- `.workspace-skills/**`를 제품 repository로 평가하지 않는다. +- 코드 구현 여부를 확인하지 않고 문서상 완료만으로 완료 판정을 내리지 않는다. diff --git a/.workspace-skills/weekly-subproject-review/scripts/collect.sh b/.workspace-skills/weekly-subproject-review/scripts/collect.sh new file mode 100755 index 0000000..d0ce7e4 --- /dev/null +++ b/.workspace-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/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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` diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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` diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 0000000..8f41d2d --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,33 @@ +# 워크스페이스 공통 규칙 + +- 현재 루트는 여러 하위 Git repository를 품은 workspace이며, 그 자체를 제품 repository로 단정하지 않는다. +- 응답은 사용자가 다르게 요청하지 않는 한 한국어로 작성한다. +- 기존 하위 repository의 구조와 규칙을 우선한다. +- 분석 대상 하위 repository는 workspace root `.gitignore`에서 ignore되는 프로젝트 폴더만 대상으로 한다. +- 하위 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-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. +- 분석 요청에서는 기본적으로 읽기 전용으로 진행하고, 파일 수정은 사용자가 명시적으로 요청한 경우에만 한다. +- git 작업 중 기존 변경을 되돌리지 않는다. + +## 스킬 라우팅 + +아래 요청은 작업 최초 1회 해당 `SKILL.md`를 읽고 수행한다. + +| 요청 성격 | SKILL.md | +|----------|----------| +| 오늘 작업 평가, 일간 하위 프로젝트 분석, daily review | `.workspace-skills/daily-subproject-review/SKILL.md` | +| 주간 하위 프로젝트 분석, cross-repo 점검, weekly review | `.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`