Skip to content

Centralize directory layout into config so profiles can customize paths

Problem

Directory paths throughout projio are hardcoded or use discovery patterns that override config values. This prevents profiles from customizing project layout (e.g., pipelines/ instead of code/pipelines/, lib/ instead of code/lib/).

Audit results

Path Config key Status
code/pipelines/ pipeio.pipelines_dir Discovery pattern overrides config in CLI, MCP, docs.py
docs/log/ notio.notes_dir Hardcoded parallel check in ecosystem_status()
docs/ None Hardcoded everywhere — mkdocs nav, pipeio docs, skills, questio
docs/pipelines/ None Hardcoded in pipeio docs.py, MCP
code/lib/ None Hardcoded in sync.py
code/utils/ code.project_utils Discovery hardcoded to code/utils/
.projio/skills/ None Hardcoded in context.py
docs/prompts/ None Hardcoded in context.py

Proposed design

Add a layout: section to .projio/config.yml as the single source of truth:

layout:
  docs: docs/
  notes: docs/log/
  pipelines: code/pipelines/
  libraries: code/lib/
  utils: code/utils/
  scripts: code/scripts/
  plan: plan/

Then thread a Layout object (or just the resolved config dict) through pipeio, notio, codio, sync, and MCP tools — replacing all hardcoded paths and discovery patterns.

Scope

  • Replace discovery patterns in pipeio CLI/MCP with config reads
  • Add config keys for docs/, code/lib/, docs/pipelines/
  • Remove hardcoded parallel path checks (e.g., ecosystem_status)
  • Profiles can then override layout values to offer alternative directory structures (e.g., a flat standard profile with pipelines/ and lib/ at root)

Hardcoded locations to fix

  • packages/pipeio/src/pipeio/cli.py:558,768-771 — discovery fallbacks
  • packages/pipeio/src/pipeio/mcp.py:399-404,1260-1268 — discovery fallbacks, docs path
  • packages/pipeio/src/pipeio/docs.py:55-70,509-520 — DAG inject, docs collect
  • src/projio/sync.py:15,33 — code/lib and code/utils discovery
  • src/projio/mcp/context.py:172,230,242,260,417,422 — skills, workflows, notes parallel check