프로젝트에서 일관된 AI 에이전트(Gemini, Claude, Cursor 등) 활용 및 운영을 위해 공통 스킬, 도메인 규칙, 관련 무시(ignore) 파일 등 agent-ops 기반 프레임워크 초기 환경을 구성함.
2.2 KiB
2.2 KiB
project-workspace
목적 / 책임
NomadCode에서 관리할 workspace/project 목록, 선택 상태, active workspace tab, 프로젝트 상세 동작을 담당한다. 현재 프로젝트 데이터와 action은 mock/placeholder 상태다.
포함 경로
src/routes/ProjectsPage.tsx: Projects page compositionsrc/components/projects/: project card, detail, workspace tabssrc/stores/projectStore.ts: 선택 프로젝트와 active workspace 상태src/api/projects.ts: project 타입, mock list, workspace action placeholder
제외 경로
src/stores/agentStore.ts: agent 대화와 context 상태src/api/tasks.ts: task API는 backend-integrationsrc/components/common/: ui-shell common primitive
주요 구성 요소
Project: workspace, repo, Plane, Outline, default agent metadatamockProjects: 현재 project inventory seedProjectCard: project 선택과 주요 action entryProjectDetail: 선택 project metadata 표시WorkspaceTabs: active workspace tab 표시와 close actionuseProjectStore: selected project와 active workspace ids 관리
유지할 패턴
- project 선택 상태는
useProjectStore를 원천으로 사용한다. - 외부 링크 열기와 placeholder action은 API/helper 함수로 격리한다.
- 실제 metadata API가 생기면
mockProjects를 Query 기반 fetch로 대체하고 store에는 UI 선택 상태만 남긴다. - project action이 agent message를 만들 때는
useAgentStore.sendMessage경계를 통해 요청한다.
다른 도메인과의 경계
- agent-workspace: project action이 agent 요청을 만들 수 있지만 agent message 생성 규칙은 agent-workspace가 유지한다.
- backend-integration: task 생성과 서버 project metadata 연동은 backend-integration에 둔다.
- ui-shell: workspace tab과 project detail의 내부 동작은 project-workspace, 전체 route/layout은 ui-shell.
금지 사항
- project mock 데이터를 여러 파일에 중복 선언하지 않는다.
window.open같은 브라우저 side effect를 UI 깊은 곳에 흩뿌리지 않는다.- workspace tab 상태와 selected project 상태가 서로 불일치하도록 업데이트하지 않는다.