# factory.yaml — L1 manifest # Variables: {gitea}, {projects_dir}, {factory}, {home} # Substitution happens at runtime from ~/.config/factory/home.toml version: "0.2.0" # Git host configuration (overrides {gitea} default) git_host: "https://git.kzntsv.site" git_org: "OpeItcLoc03" # Components to install/update components: # === Core infrastructure === - name: dot-common display_name: ".common shared libs" source: type: git url: "{git_host}/{git_org}/common" branch: master target: "{projects_dir}/.common" health_check: type: file_exists path: "{target}/scripts/claude-switch.ps1" clients: [claude-code, copilot-cli, gemini-cli] - name: projects-meta-mcp display_name: "Projects-meta MCP server" # Subdirectory of .common repo — no standalone git source target: "{projects_dir}/.common/lib/projects-meta-mcp" deps: [dot-common] setup_skill: setup-projects-meta health_check: type: mcp_tool tool: mcp__projects-meta__meta_status clients: [claude-code, copilot-cli] - name: interns-mcp display_name: "Interns MCP server" # Subdirectory of .common repo — no standalone git source target: "{projects_dir}/.common/lib/interns-mcp" deps: [dot-common] setup_skill: setup-interns health_check: type: mcp_tool tool: mcp__interns__bulk_text_read clients: [claude-code, copilot-cli] # === Knowledge === - name: dot-wiki display_name: "Shared project wiki" source: type: git url: "{git_host}/{git_org}/projects-wiki" branch: main target: "{projects_dir}/.wiki" deps: [projects-meta-mcp] setup_skill: setup-wiki health_check: type: file_exists path: "{target}/CLAUDE.md" clients: [claude-code, copilot-cli, gemini-cli] - name: dot-tasks display_name: "Local task board" target: "{projects_dir}/.tasks" deps: [dot-wiki] setup_skill: setup-tasks health_check: type: file_exists path: "{target}/STATUS.md" clients: [claude-code, copilot-cli, gemini-cli] # === Tooling === - name: claude-skills display_name: "Claude skills collection" source: type: git url: "{git_host}/{git_org}/claude-skills" branch: master target: "{projects_dir}/claude-skills" deps: [dot-common] post_install: shell: pwsh script: "{target}/scripts/install.ps1" shell_alt: bash script_alt: "{target}/scripts/install.sh" health_check: type: directory_exists path: "{home}/.claude/skills" clients: [claude-code] # === Fixtures (optional) === - name: dot-organization display_name: "Organization roster & personas" source: type: git url: "{git_host}/{git_org}/.organization" branch: master target: "{projects_dir}/.organization" optional: true health_check: type: file_exists path: "{target}/roster.md" clients: [claude-code, copilot-cli, gemini-cli] - name: dot-templates display_name: "Project templates" source: type: git url: "{git_host}/{git_org}/.templates" branch: master target: "{projects_dir}/.templates" optional: true health_check: type: file_exists path: "{target}/project/.gitkeep" clients: [claude-code, copilot-cli, gemini-cli] - name: dot-meeting-room display_name: "Meeting room / brainstorm archive" source: type: git url: "{git_host}/{git_org}/.meeting-room" branch: master target: "{projects_dir}/.meeting-room" optional: true health_check: type: file_exists path: "{target}/.brainstorm/.gitkeep" clients: [claude-code, copilot-cli, gemini-cli] # Health check types: # file_exists: checks if file exists at {path} # directory_exists: checks if directory exists at {path} # mcp_tool: checks if MCP tool is available (via ~/.claude.json) # command: runs command and checks exit code 0 # custom: runs custom health check script