# factory.yaml — manifest компонентов factory # # Runtime variables (expanded from ~/.config/factory/home.toml): # {git_host} — e.g. https://git.kzntsv.site # {git_org} — e.g. OpeItcLoc03 # {projects_dir} — e.g. C:\Users\alice\projects # {factory} — {projects_dir}\.factory # {home} — user home dir (~) schema_version: "1" factory_version: "0.4.0" # ── Core (always installed) ────────────────────────────────────────────────── # # Everything in core ships inside the factory repo: # lib/ — MCP servers (built locally on install) # skills/ — skill files (copied to ~/.claude/skills/) # # bootstrap.ps1 reads this list to drive the build loop. core: components: - id: projects-meta-mcp display_name: "Projects-meta MCP server" source: lib/projects-meta-mcp version: "2.25.0" type: typescript install: run: - npm install --silent - npm run build health_check: type: mcp_tool tool: mcp__projects-meta__meta_status - id: wiki-graph display_name: "Wiki-graph MCP server" source: lib/wiki-graph version: "0.3.1" type: typescript install: run: - npm install --silent - npm run build health_check: type: mcp_tool tool: mcp__wiki-graph__stats - id: interns-mcp display_name: "Interns MCP server" source: lib/interns-mcp version: "0.3.3" type: python install: venv: .venv pip: "-e ." health_check: type: mcp_tool tool: mcp__interns__bulk_text_read - id: skills display_name: "Claude skills" source: skills version: "bundled" type: skills install: copy_to: "{home}/.claude/skills/" health_check: type: directory_exists path: "{home}/.claude/skills" # ── Modules (selected at install time) ────────────────────────────────────── # # Each module is optional. bootstrap.ps1 asks the user which to install. # creates[] describes what bootstrap creates on the user's machine/Gitea. # # create types: # local_dir — create a local directory # gitea_repo — create a repo on the user's Gitea via API # local_clone — git clone a repo locally # claude_md_snippet — append a trigger line to CLAUDE.md # setup_skill — run a setup-* skill post-install modules: - id: tasks optional: true description: "Task management — projects-meta board + per-project .tasks/" creates: - type: local_dir path: "{projects_dir}/.tasks" - type: claude_md_snippet content: "use task management system" - type: setup_skill skill: setup-tasks - id: wiki optional: true description: "Shared knowledge wiki — linked plaintext, no RAG" creates: - type: gitea_repo name: "projects-wiki" visibility: private description: "Shared project wiki" init: true - type: local_clone repo: "{git_host}/{git_org}/projects-wiki" path: "{projects_dir}/.wiki" - type: claude_md_snippet content: "use project wiki" - type: setup_skill skill: setup-wiki - id: workshop optional: true description: "Boss-zone — design work, brainstorms, archived decisions" creates: - type: gitea_repo name: ".workshop" visibility: private description: "Design workspace and brainstorm archive" init: true - type: local_clone repo: "{git_host}/{git_org}/.workshop" path: "{projects_dir}/.workshop" - id: admin optional: true description: "Ops zone — infrastructure administration and runbooks" creates: - type: gitea_repo name: ".admin" visibility: private description: "Infrastructure ops and admin notes" init: true - type: local_clone repo: "{git_host}/{git_org}/.admin" path: "{projects_dir}/.admin" - id: agents-task-runner optional: true description: "Standing-duty stack — task-runner + watchdog + appeals-inbox as OS-native services" # Host node processes (mongo + reconciler stay in docker, own restart policy). Installed as # platform-native services (systemd / launchd / winsw) by the L2 setup skill — no node window, # OS-supervised autostart + crash-restart. Scope is runtime config (poller-scope.json), # disarmed by default. Service templates: OpeItcLoc03/common @ lib/agents-task-runner/service/. creates: - type: setup_skill skill: setup-agents-task-runner # Forward-looking for factory L1 (Go-CLI, build-pending): the three supervised processes and # their health probes. bootstrap.ps1 (L0b) reads only `- id:` for modules and ignores the rest; # the L2 setup skill performs the actual install + verification. service: run_as: user # NOT root / LocalSystem — reads ~/.config, ~/.claude, git creds; spawns claude # NOTE: nested keys use `- name:` (not `- id:`) on purpose — the L0b bootstrap.ps1 manifest # parser treats every `- id:` line as a top-level component/module item and would otherwise # mis-ingest these processes as phantom modules. `- name:` is invisible to that regex. processes: - name: agents-task-runner health_check: type: http url: "http://localhost:3000" - name: agents-task-runner-watchdog health_check: type: log_fresh path: "watchdog.log" max_age_s: 120 - name: agents-task-runner-appeals-inbox health_check: type: http url: "http://127.0.0.1:4317"