원클릭으로
project-id-guarantees
How project IDs are guaranteed in the flightdeck system — all spawn paths and fallback mechanisms
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
How project IDs are guaranteed in the flightdeck system — all spawn paths and fallback mechanisms
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
How the multi-backend adapter system works — AgentAdapter interface, ACP protocol, session resume, and how to add new provider adapters
When debugging why an agent has the wrong provider/model, or when modifying agent creation or delegation flows.
How to get agents to use group chats for peer coordination in flightdeck-based crews. Covers hub-and-spoke anti-pattern, auto-grouping triggers, and file-lock-linked groups. Use when setting up multi-agent crews with 3+ agents or diagnosing why agents aren't collaborating directly.
When fetching from the `/coordination/activity` API and you only need specific action types (e.g., `progress_update`, `task_completed`, `delegated`).
When fetching activity data for UI display, or debugging why activity-based features show empty/stale data.
Architecture decisions and patterns from Flightdeck development (Phases 2–4). Covers feature architecture, state management, component patterns, and API design.
| name | project-id-guarantees |
| description | How project IDs are guaranteed in the flightdeck system — all spawn paths and fallback mechanisms |
Every project must have a valid UUID. The system enforces this through multiple layers.
| Path | How projectId is assigned |
|---|---|
POST /lead/start | Creates project via ProjectRegistry |
POST /agents (lead role) | Auto-creates project for lead agents |
POST /projects/:id/resume | Uses existing project ID |
POST /sessions/:id/resume | Uses existing session's project ID |
AgentManager.spawn() has a 4-layer fallback:
projectId from spawn optionseffectiveProjectId inherited from parent chainChild agents always inherit from their parent chain.
For older data that may be missing projectId, use fallback patterns:
// Prefer projectId, fall back to agent id
const id = lead.projectId || lead.id;
// Return empty arrays instead of crashing
const activities = projectId ? getByProject(projectId) : [];
Always use graceful degradation rather than crashing when projectId is missing.