一键导入
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.