Skip to content

Architecture

luiseiman edited this page Apr 5, 2026 · 3 revisions

Architecture

Component Map

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         dotforge                               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ template β”‚  stacks  β”‚  skills  β”‚  agents  β”‚practices β”‚  audit   β”‚
β”‚          β”‚  (16)    β”‚  (14)    β”‚  (7)     β”‚          β”‚          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                        global/                                   β”‚
β”‚              (~/.claude/ management via sync.sh)                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                         mcp/                                     β”‚
β”‚   MCP server templates (github, postgres, supabase, redis, slack)β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                    integrations/                                  β”‚
β”‚              (cross-tool bridges: OpenClaw)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                      registry/                                   β”‚
β”‚              (cross-project tracking)                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow

/forge bootstrap
    β”‚
    β”œβ”€β”€ Detect stacks (stacks/detect.md)
    β”œβ”€β”€ Apply template/ base
    β”œβ”€β”€ Layer matching stacks/
    β”œβ”€β”€ Generate .claude/ in project
    └── Create .forge-manifest.json

/forge sync
    β”‚
    β”œβ”€β”€ Compare manifest vs current template
    β”œβ”€β”€ Merge: managed sections updated, custom preserved
    └── Update manifest + registry

/forge audit
    β”‚
    β”œβ”€β”€ Evaluate 12-item checklist
    β”œβ”€β”€ Apply scoring formula + security cap
    └── Append to registry history[]

Session hooks (automatic)
    β”‚
    β”œβ”€β”€ block-destructive β†’ /tmp/counter
    β”œβ”€β”€ lint-on-save β†’ /tmp/counter
    └── session-report β†’ ~/.claude/metrics/{slug}/{date}.json

Key Design Decisions

  • Symlinks over copies β€” skills/agents are symlinked from dotforge to ~/.claude/, so updates propagate instantly
  • Merge, never overwrite β€” sync preserves everything below <!-- forge:custom --> markers
  • Additive stacks β€” stacks compose by set union of permissions, no conflicts
  • Security cap β€” missing security basics cap the score at 6.0, regardless of other config quality
  • Counter files β€” hooks use md5(PWD) for deterministic per-project temp files in /tmp/

Clone this wiki locally