feat: Add ai repo as submodule and create deployment layer
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Domain
- developer-experience, devops, tooling
Research direction
Start by reading the existing .claude/justfile install recipe and the root justfile, then inspect the requested arustydev/ai repository layout. Phase 1 is done when ai/ is recorded as a submodule, .gitmodules is updated, and ai-init initializes and updates it; the later copy, build, profile, and secret workflows are explicitly future phases.
Written by the indexing model from the issue text.
Description
Overview
Add the arustydev/ai repository as a git submodule and create a deployment layer that installs AI configurations to the appropriate locations on each machine.
Context
The ai repo is the shareable source of truth for AI configurations. The dotfiles repo serves as the deployment layer that:
- Consumes
ai/as a submodule - Builds/compiles configs (future - for now, just copies)
- Deploys to target locations (
~/.claude/,~/.zed/, etc.)
Workflow
Project .claude/ ──promote──▶ ai/ (source) ──build──▶ global (~/.claude/)
│
▼
dotfiles/
(deployment layer)
Target Structure
dotfiles/
├── ai/ ← git submodule (arustydev/ai)
│
├── .claude/ ← dotfiles' own project configs
│ ├── commands/
│ ├── skills/
│ └── justfile ← existing install logic
│
├── .ai/ ← dotfiles' own .ai configs (if needed)
│
└── justfile
├── install ← existing: install all dotfiles
├── ai-init ← initialize/update ai submodule
├── ai-build PROFILE TOOL ← future: compile components
├── ai-deploy PROFILE TOOL ← future: deploy to targets
└── ai-sync ← pull + build + deploy
Implementation Phases
Phase 1: Structure (Current Focus)
- Add
arustydev/aias git submodule atdotfiles/ai/ - Update
.gitmodules - Add
ai-initrecipe to justfile
Phase 2: Basic Workflow
- Create
just install airecipe that copies to target locations:ai/components/commands/→~/.claude/commands/ai/components/skills/→~/.claude/skills/ai/components/hooks/→~/.claude/hooks/ai/components/rules/→~/.claude/rules/
- Handle Zed configs:
ai/tools/zed/→~/.zed/ - Create
ai-syncrecipe for other machines
Phase 3: Build System (Future)
- Add profile selection (env var
AI_PROFILEor config file) - Call
ai/build/compile.pyfrom justfile - Deploy from
ai/dist/instead ofai/components/
Phase 4: Dynamic MCP (Future)
- Generate MCP configs from
ai/mcp/ - Resolve
op://secrets at deploy time using 1Password CLI - Support tool-specific MCP formats
Justfile Recipes
Phase 1 (Now)
# Initialize or update the ai submodule
ai-init:
git submodule update --init --recursive ai/
git submodule update --remote ai/
Phase 2 (Soon)
# Install AI configs to global locations (simple copy, no profiles yet)
[group('ai')]
install-ai:
@echo "Installing AI configs..."
mkdir -p ~/.claude/{commands,skills,hooks,rules}
cp -r ai/components/commands/* ~/.claude/commands/ 2>/dev/null || true
cp -r ai/components/skills/* ~/.claude/skills/ 2>/dev/null || true
cp -r ai/components/hooks/* ~/.claude/hooks/ 2>/dev/null || true
cp -r ai/components/rules/* ~/.claude/rules/ 2>/dev/null || true
@echo "✅ AI configs installed"
# Sync AI configs (pull latest + install)
[group('ai')]
ai-sync:
git submodule update --remote ai/
just install-ai
Phase 3+ (Future)
# Build AI configs for a specific profile and tool
[group('ai')]
ai-build profile="personal" tool="claude-code":
cd ai && python build/compile.py --profile {{profile}} --tool {{tool}}
# Deploy built configs
[group('ai')]
ai-deploy profile="personal" tool="claude-code":
@echo "Deploying {{tool}} configs for {{profile}} profile..."
# Copy from ai/dist/{{tool}}/{{profile}}/ to target
Target Locations by Tool
| Tool | Target Location | Config Type |
|---|---|---|
| Claude Code | ~/.claude/ |
commands, skills, hooks, rules, settings.json |
| Claude Desktop | ~/Library/Application Support/Claude/ |
claude_desktop_config.json |
| Zed | ~/.zed/ |
settings.json, prompts/ |
| VSCode | ~/.vscode/ |
settings.json, extensions |
Profile Selection (Future)
Options for selecting which profile to use:
- Environment variable:
AI_PROFILE=personal just ai-sync - Config file:
~/.config/ai-profilecontains profile name - Hostname-based: Lookup table mapping hostnames to profiles
- Manual: Always specify as argument
Secrets Handling
Configs may contain 1Password references like op://vault/item/key. At deploy time:
# Resolve secrets using 1Password CLI
op inject -i config.template.json -o config.json
Related Issues
- arustydev/ai#1 - Restructure ai repo for composable architecture
Migration Notes
Current State
.claude/exists with commands, skills, hooks, rules.claude/justfilehas install recipe that copies to~/.claude/.ai/exists with various content
After Migration
ai/submodule is the source of truth.claude/contains only dotfiles-specific project configs.ai/may be removed or kept for dotfiles-specific plans
Labels
- enhancement
- architecture
- Dominant language
- Jupyter Notebook
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aRustyDev/dotfiles
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
-
dependencies github-actions
Difficulty 2/5 1-3 hours Newbie friendliness 25/100
-
enhancement
-
enhancement
-
enhancement
All issues in aRustyDev/dotfiles
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
vercel-labs/just-bash#464 ·
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Automattic/safe-publish#594 ·
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
bug feat:crypto feat:utils
Difficulty 2/5 1-3 hours Newbie friendliness 70/100