cli/docs/cmd/setup/example.md
Snider 9add6cf2ee refactor(cli): restructure cmd packages into subdirectories
- Move CLI commands into subdirectories matching command hierarchy:
  dev/, go/, php/, build/, ci/, sdk/, pkg/, vm/, docs/, setup/, doctor/, test/, ai/
- Create shared/ package for common styles and utilities
- Add new `core ai` root command with claude subcommand
- Update package declarations and imports across all files
- Create commands.go entry points for each package
- Remove GUI-related files (moved to core-gui repo)

This makes the filesystem structure match the CLI command structure,
improving context capture and code organization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 18:02:43 +00:00

4.7 KiB

Setup Examples

Clone from Registry

# Clone all repos defined in repos.yaml
core setup

# Preview what would be cloned
core setup --dry-run

# Only foundation packages
core setup --only foundation

# Multiple types
core setup --only foundation,module

# Use specific registry file
core setup --registry ~/projects/repos.yaml

Bootstrap New Workspace

# In an empty directory - bootstraps in place
mkdir my-workspace && cd my-workspace
core setup

# Shows interactive wizard to select packages:
# ┌─────────────────────────────────────────────┐
# │ Select packages to clone                     │
# │ Use space to select, enter to confirm        │
# │                                              │
# │ ── Foundation (core framework) ──            │
# │ ☑ core-php         Foundation framework      │
# │ ☑ core-tenant      Multi-tenancy module      │
# │                                              │
# │ ── Products (applications) ──                │
# │ ☐ core-bio         Link-in-bio product       │
# │ ☐ core-social      Social scheduling         │
# └─────────────────────────────────────────────┘

# Non-interactive: clone all packages
core setup --all

# Create workspace in subdirectory
cd ~/Code
core setup --name my-project

# CI mode: fully non-interactive
core setup --all --name ci-test

Setup Single Repository

# In a git repo without .core/ configuration
cd ~/Code/my-go-project
core setup

# Shows choice dialog:
# ┌─────────────────────────────────────────────┐
# │ Setup options                                │
# │ You're in a git repository. What would you  │
# │ like to do?                                  │
# │                                              │
# │ ● Setup this repo (create .core/ config)    │
# │ ○ Create a new workspace (clone repos)      │
# └─────────────────────────────────────────────┘

# Preview generated configuration
core setup --dry-run

# Output:
# → Setting up repository configuration
#
# ✓ Detected project type: go
#   → Also found: (none)
#
# → Would create:
#   /Users/you/Code/my-go-project/.core/build.yaml
#
# Configuration preview:
#   version: 1
#   project:
#     name: my-go-project
#     description: Go application
#     main: ./cmd/my-go-project
#     binary: my-go-project
#   ...

Configuration Files

repos.yaml (Workspace Registry)

org: host-uk
base_path: .
defaults:
  ci: github
  license: EUPL-1.2
  branch: main
repos:
  core-php:
    type: foundation
    description: Foundation framework
  core-tenant:
    type: module
    depends_on: [core-php]
    description: Multi-tenancy module
  core-admin:
    type: module
    depends_on: [core-php, core-tenant]
    description: Admin panel
  core-bio:
    type: product
    depends_on: [core-php, core-tenant]
    description: Link-in-bio product
    domain: bio.host.uk.com
  core-devops:
    type: foundation
    clone: false  # Already exists, skip cloning

.core/build.yaml (Repository Config)

Generated for Go projects:

version: 1
project:
  name: my-project
  description: Go application
  main: ./cmd/my-project
  binary: my-project
build:
  cgo: false
  flags:
    - -trimpath
  ldflags:
    - -s
    - -w
  env: []
targets:
  - os: linux
    arch: amd64
  - os: linux
    arch: arm64
  - os: darwin
    arch: amd64
  - os: darwin
    arch: arm64
  - os: windows
    arch: amd64
sign:
  enabled: false

Generated for Wails projects:

version: 1
project:
  name: my-app
  description: Wails desktop application
  main: .
  binary: my-app
targets:
  - os: darwin
    arch: amd64
  - os: darwin
    arch: arm64
  - os: windows
    arch: amd64
  - os: linux
    arch: amd64

Workflow Examples

New Developer Setup

# Clone the workspace
mkdir host-uk && cd host-uk
core setup

# Select packages in wizard, then:
core health        # Check all repos are healthy
core doctor        # Verify environment

CI Pipeline Setup

# Non-interactive full clone
core setup --all --name workspace

# Or with specific packages
core setup --only foundation,module --name workspace

Adding Build Config to Existing Repo

cd my-existing-project
core setup              # Choose "Setup this repo"
# Edit .core/build.yaml as needed
core build              # Build the project