commandby alinaqi
/analyze-workspace
> Full dynamic analysis of workspace topology, dependencies, and contracts.
Installs: 0
Used in: 1 repos
Updated: 0mo ago
$
npx ai-builder add command alinaqi/analyze-workspaceInstalls to .claude/commands/analyze-workspace.md
# /analyze-workspace
> Full dynamic analysis of workspace topology, dependencies, and contracts.
## Trigger
Run this command when:
- First time setting up workspace awareness
- Major refactor or new module added
- Weekly scheduled refresh
- `/sync-contracts` reports too much drift
- Switching to work on a different workspace
## Behavior
### Phase 1: Topology Discovery (~30 seconds)
```
š Analyzing workspace topology...
Checking workspace indicators:
ā Found turbo.json (Turborepo)
ā Found pnpm-workspace.yaml
ā No nx.json
ā No lerna.json
Workspace type: Monorepo (Turborepo)
Root: /Users/ali/code/myapp
Discovering modules...
ā apps/web (package.json found)
ā apps/api (pyproject.toml found)
ā packages/shared-types (package.json found)
ā packages/db (package.json found)
Modules found: 4
```
### Phase 2: Module Analysis (~60 seconds)
For each module, analyze:
```
š¦ Analyzing apps/web...
Tech stack: Next.js 14, TypeScript, TailwindCSS
Entry point: src/app/layout.tsx
Key directories: src/lib/, src/components/, src/types/
Dependencies: @repo/shared-types, @repo/ui
External calls: fetch ā apps/api (15 files)
Token estimate: 18K full, 5K summarized
š¦ Analyzing apps/api...
Tech stack: FastAPI, Python 3.12, SQLAlchemy
Entry point: app/main.py
Key directories: app/routes/, app/schemas/, app/models/
Dependencies: packages/db (internal)
Exposes: OpenAPI spec (47 endpoints)
Token estimate: 24K full, 7K summarized
š¦ Analyzing packages/shared-types...
Tech stack: TypeScript
Entry point: src/index.ts
Exports: 34 types
Consumed by: apps/web, apps/api (codegen)
Token estimate: 3K
š¦ Analyzing packages/db...
Tech stack: Drizzle ORM, TypeScript
Entry point: src/index.ts
Tables: 12
Migrations: 23
Token estimate: 8K full, 2K schema only
```
### Phase 3: Contract Extraction (~45 seconds)
```
š Extracting contracts...
OpenAPI Detection:
ā apps/api/openapi.json (47 endpoints, 23 schemas)
GraphQL Detection:
ā No GraphQL schemas found
TypeScript Types:
ā packages/shared-types/src/index.ts (34 exports)
Pydantic Schemas:
ā apps/api/app/schemas/ (23 models)
Database Schema:
ā packages/db/schema/ (12 tables)
Contract sources registered: 5 files
```
### Phase 4: Dependency Graph (~30 seconds)
```
š Building dependency graph...
Internal dependencies:
apps/web ā packages/shared-types (23 imports)
apps/web ā apps/api (15 API calls)
apps/api ā packages/db (12 imports)
apps/api ā packages/shared-types (codegen)
packages/db ā (none)
packages/shared-types ā (none)
Dependency order (for changes):
1. packages/shared-types (leaf)
2. packages/db (leaf)
3. apps/api (depends on db, shared-types)
4. apps/web (depends on api, shared-types)
```
### Phase 5: Key File Identification (~30 seconds)
```
š Identifying key files...
High priority (always relevant):
ā apps/api/openapi.json
ā packages/shared-types/src/index.ts
ā apps/web/src/lib/api/client.ts
Context-specific:
ā API work: apps/api/app/routes/*.py
ā DB work: packages/db/schema/*.ts
ā Auth work: apps/api/app/routes/auth.py + deps
ā Frontend: apps/web/src/components/**
Token budget by context:
Frontend API: ~8K tokens
Backend endpoints: ~12K tokens
Database changes: ~6K tokens
Shared types: ~4K tokens
```
### Phase 6: Generate Artifacts
```
š Generating workspace artifacts...
Created:
ā _project_specs/workspace/TOPOLOGY.md
ā _project_specs/workspace/CONTRACTS.md
ā _project_specs/workspace/DEPENDENCY_GRAPH.md
ā _project_specs/workspace/KEY_FILES.md
ā _project_specs/workspace/CROSS_REPO_INDEX.md
ā _project_specs/workspace/.contract-sources
```
## Final Output
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
WORKSPACE ANALYSIS COMPLETE
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Workspace: myapp
Type: Monorepo (Turborepo)
Modules: 4 (2 apps, 2 packages)
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā apps/web (Next.js) āāāāā apps/api (FastAPI) ā
ā ā ā ā
ā ā¼ ā¼ ā
ā packages/shared-types packages/db ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Contracts:
REST API: 47 endpoints
Shared types: 34 interfaces
DB tables: 12
Token Estimates:
Current module only: ~20K tokens
With cross-module context: ~45K tokens
Full workspace: ~53K tokens
Budget remaining: ~100K tokens ā
Artifacts generated in: _project_specs/workspace/
Next steps:
⢠Contracts will auto-sync on commit (if changed)
⢠Run /sync-contracts manually to refresh
⢠Run /workspace-status for quick check
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
## Flags
| Flag | Description |
|------|-------------|
| `--force` | Regenerate all artifacts even if recent |
| `--type <type>` | Override auto-detection: `monorepo`, `multi-repo`, `hybrid` |
| `--repos <paths>` | For multi-repo: comma-separated paths to related repos |
| `--skip-contracts` | Skip contract extraction (faster) |
| `--verbose` | Show detailed analysis output |
| `--json` | Output as JSON (for tooling) |
## Multi-Repo Mode
For workspaces with separate git repositories:
```bash
# Auto-detect sibling repos
/analyze-workspace --type multi-repo
# Specify repo locations explicitly
/analyze-workspace --type multi-repo --repos "../backend,../shared,../mobile"
```
Claude will:
1. Detect related repos in parent directory
2. Set up symlinks in `.workspace/repos/` if needed
3. Analyze each repo
4. Build cross-repo dependency graph
5. Extract contracts from each
## Integration Points
### On First Run
Creates the full workspace context structure:
```
_project_specs/
āāā workspace/
āāā TOPOLOGY.md
āāā CONTRACTS.md
āāā DEPENDENCY_GRAPH.md
āāā KEY_FILES.md
āāā CROSS_REPO_INDEX.md
āāā .contract-sources
āāā cache/ # Cached cross-repo files
```
### Updates CLAUDE.md
Adds workspace skill reference:
```markdown
## Skills
- .claude/skills/workspace.md
```
### Sets Up Hooks
Installs contract freshness hooks:
- Session start: Staleness check
- Post-commit: Auto-sync trigger
- Pre-push: Validation gate
## Error Handling
### No Workspace Detected
```
ā ļø No workspace configuration detected
This appears to be a single-repo project.
Use /analyze-repo for single repository analysis.
Or specify workspace type manually:
/analyze-workspace --type monorepo
/analyze-workspace --type multi-repo --repos "../other-repo"
```
### Access Denied to Related Repo
```
ā ļø Cannot access related repository: ../backend
Options:
1. Ensure the repo exists at that path
2. Create symlink: ln -s /path/to/backend .workspace/repos/backend
3. Skip this repo: /analyze-workspace --skip-repo backend
```
### Contract Extraction Failed
```
ā ļø Failed to extract contracts from apps/api
Reason: openapi.json not found
Suggestions:
1. Generate OpenAPI spec: cd apps/api && python -m app.generate_openapi
2. Skip contract extraction: /analyze-workspace --skip-contracts
3. Use inferred contracts: /analyze-workspace --infer-contracts
```
## When to Re-run
| Scenario | Action |
|----------|--------|
| Added new module/package | Full `/analyze-workspace` |
| Changed API endpoints | `/sync-contracts` (lightweight) |
| Major refactor | Full `/analyze-workspace --force` |
| Weekly maintenance | Full `/analyze-workspace` |
| Quick check | `/workspace-status` |
Quick Install
$
npx ai-builder add command alinaqi/analyze-workspaceDetails
- Type
- command
- Author
- alinaqi
- Slug
- alinaqi/analyze-workspace
- Created
- 0mo ago