Files
claude-archeflow-plugin/skills/multi-project/SKILL.md
Christian Nennemann d94688ca1b refactor: trim 11 secondary ArcheFlow skills from 3340 to 952 lines
Remove verbose YAML examples, bash pseudo-code, tutorial prose, and
motivational content from configuration/integration skills while
preserving all operational protocols, reference tables, and rules.

Skills trimmed: domains, colette-bridge, multi-project, cost-tracking,
git-integration, custom-archetypes, workflow-design, templates,
autonomous-mode, progress, presence.
2026-04-06 20:48:50 +02:00

5.0 KiB

name, description
name description
multi-project Multi-project orchestration for workspaces with 20+ repos. Builds a dependency DAG across projects, runs independent sub-runs in parallel, shares artifacts between dependent projects, and enforces a shared budget. Each sub-run uses the standard `run` skill internally. <example>User: "archeflow:multi-project" with a multi-run.yaml</example> <example>User: "Run this across archeflow, colette, and giesing"</example>

Multi-Project Orchestration

Coordinates ArcheFlow runs across multiple projects. Each project gets its own PDCA run (via run skill), but dependencies are respected, artifacts shared, and budget tracked globally.

Multi-Run Definition

Defined in .archeflow/multi-run.yaml or passed via --config.

name: "giesing-gschichten-v2"
projects:
  - id: archeflow
    path: "../archeflow"
    task: "Add memory injection to run skill"
    workflow: fast
    depends_on: []
  - id: colette
    path: "../writing.colette"
    task: "Add voice validation command"
    depends_on: []
  - id: giesing
    path: "."
    task: "Write story #2"
    workflow: kurzgeschichte
    domain: writing
    depends_on: [archeflow, colette]
budget:
  total_usd: 15.00
  per_project_usd: 10.00

Rules: Unique id per project. depends_on references other id values. Cycles rejected at validation. At least one project must have empty depends_on. workflow and domain auto-select if omitted.

Dependency Resolution

Topological sort of the project DAG determines execution order.

Layer 0 (immediate): [archeflow, colette]   # No deps, start now
Layer 1:             [giesing]               # Depends on Layer 0

Independent projects in the same layer run in parallel. When a project completes, downstream projects with all deps met move to the ready queue.

Cycle detection via Kahn's algorithm. If sorted list is shorter than project list, report the cycle and abort.

Parallel Execution

For each ready project, start a sub-run as a parallel subagent with isolation: "worktree". Each sub-run invokes archeflow:run with its own run_id, workflow, domain, and budget slice.

When parallel: false, run sequentially in topological order.

Cross-Project Artifacts

When project B depends on A, B's Explorer receives upstream artifact summaries:

  • Only summaries injected (not full artifacts)
  • Large artifacts (>200 lines): extract summary section only
  • Cross-project injection happens only in Plan phase
  • Downstream Explorer has filesystem access to full artifacts if needed

Artifact directory: .archeflow/artifacts/<MULTI_RUN_ID>/<project_id>/

Budget Coordination

Level Type Behavior
total_usd Hard cap Stops ALL projects when exceeded
per_project_usd Soft cap Warns but continues

Enforcement points:

  1. Before starting a sub-run: estimate cost, halt if > remaining budget
  2. After each sub-run: update total, emit budget.warning at threshold, emit budget.exceeded at cap

Each sub-run receives min(per_project_usd, remaining_total_budget) as its budget.

Failure Handling

Scenario Action
Project fails Mark failed. Independent projects continue.
Dependency failed Mark downstream as blocked. Do not start.
Budget exceeded Halt current project. Skip downstream.
All entry-points fail Entire multi-run fails.

Blocked project resolution:

  • Autonomous mode: skip blocked projects, continue independent ones
  • Attended mode: offer skip / retry / abort

Progress Tracking

Live progress at .archeflow/multi-progress.md, updated after every project state change:

| Project | Status | Domain | Phase | Detail |
|---------|--------|--------|-------|--------|
| archeflow | completed | code | -- | 1 cycle, $1.20 |
| colette | running | code | DO | maker drafting |
| giesing | blocked | writing | -- | waiting for colette |

Budget: $3.00 / $15.00 (20%)

Master Events

Written to .archeflow/events/<MULTI_RUN_ID>.jsonl:

Event When
multi.start Multi-run begins
project.start Sub-run launches
project.complete Sub-run succeeds
project.failed Sub-run fails
project.blocked Dependency failed
project.unblocked All deps met
budget.warning Threshold crossed
budget.exceeded Hard cap hit
multi.complete All projects done

Dry-Run and Resume

--dry-run: Validates DAG, runs archeflow:run --dry-run per project, shows cost estimate. Does not execute.

--resume <id>: Reconstructs state from master events. Retries failed projects, starts pending ones with deps met.

Workspace Registry

If docs/project-registry.md exists: auto-discover paths by project id, validate existence, update registry after meaningful changes.

Completion

Status values: completed (all done), partial (some failed/skipped), failed (none completed), halted (budget/abort).

Final report includes per-project results, cost breakdown by phase, and dependency graph execution timeline.