Solo developer guide
This guide shows how solo developers use AlignTrue to maintain consistent AI agent behavior across personal projects without team overhead.
Quick setup (60 seconds)
Install CLI:
npm
bash npm install -g aligntrue Initialize project:
cd my-project
aligntrue init
# Sync to agents
aligntrue syncResult: Rules synced to Cursor and AGENTS.md. Start coding with consistent agent behavior. Edit .aligntrue/rules/*.md as the source; exports are read-only.
Organizing your rules
As your project grows, you may want to organize rules differently:
Single file (getting started)
Best for: Solo developers, < 20 rules, getting started
Store all rules in one file under .aligntrue/rules/ (source of truth):
project/
├── .aligntrue/
│ ├── config.yaml
│ └── rules/
│ └── project-rules.md ← Edit here
└── AGENTS.md ← Export (read-only)Setup:
aligntrue init
aligntrue syncEverything is simple and fast. .aligntrue/rules/ stays the source of truth (auto-generated from init), and AGENTS.md/.cursor exports are read-only outputs.
Multi-file (when AGENTS.md grows large)
Best for: Projects with 20+ rules, easier navigation
Split rules into multiple files in .aligntrue/rules/:
project/
├── .aligntrue/
│ ├── config.yaml
│ └── rules/
│ ├── typescript.md
│ ├── testing.md
│ └── security.md
└── AGENTS.md ← Auto-generated from rules/Migration:
# Split your AGENTS.md into multiple files
aligntrue sources split --yes
# Sync
aligntrue syncBenefits:
- Logical organization by concern
- Reduced merge conflicts if using git
- Easier to find and update specific rules
Monorepo scopes (multiple stacks)
Best for: Monorepos with frontend/backend/services
Use scopes to apply different rules to different directories:
# .aligntrue/config.yaml
sources:
- type: local
path: .aligntrue/rules
scopes:
- path: "apps/web"
inherit: true # Includes root rules
- path: "services/api"
inherit: trueEach scope can have its own AGENTS.md or .cursor/rules/ with inherited rules.
When to use: Multiple projects in one repo that need context-specific rules.
Solo mode features
What you get:
- Local-first operation (no required network calls)
- Lockfile disabled by default (no drift detection overhead)
- Bundle disabled by default (no dependency merging)
- Fast iteration
- Full customization (plugs, overlays, scopes)
What you don’t need:
- Team mode (enable with
aligntrue team enableif needed) - Lockfile validation (enable if you want reproducibility)
Daily workflow scenarios
Scenario 1: Starting a new project
Goal: Set up AlignTrue with sensible defaults in under 60 seconds.
Steps:
# 1. Initialize project
cd my-new-project
aligntrue init
# Interactive prompts:
# - Project name: my-new-project
# - Primary agent: cursor
# - Include base-global align? yes
# - Include stack align? nextjs (or your stack)
# 2. Sync to agents
aligntrue sync
# 3. Start coding
cursor .What happened:
- Created
.aligntrue/rules(internal IR, auto-generated) - Created or detected your agent files (
.cursor/rules/*.mdc,AGENTS.md, etc.) - Pulled example Aligns from local examples
- Exported to all detected agent formats
- Ready to sync rules to all agents
Next steps:
- Customize test command:
aligntrue plugs set test.cmd "pnpm test" - Adjust severity:
aligntrue override add --selector 'rule[id=...]' --set severity=warn
Scenario 2: Using example Aligns
Goal: Use example Aligns from the AlignTrue repository and customize for your project.
Steps:
# 1. Browse examples
# Check examples/aligns/ directory
# 2. Import align via git source
# Add to .aligntrue/config.yaml:
# sources:
# - type: git
# url: https://github.com/AlignTrue/aligntrue
# path: examples/aligns/testing.yaml
# 3. Sync rules to all agents
aligntrue sync
# 3. Audit plugs (see what needs customization)
aligntrue plugs list
# Output:
# Slots declared:
# test.cmd
# Required: true
# Status: ⚠ required
# Example: pytest -q
# 4. Set required plugs
aligntrue plugs set test.cmd "pnpm test"
# 5. Sync with filled plugs
aligntrue syncCustomization options:
Plugs (stack-specific values):
aligntrue plugs set test.cmd "pnpm test"
aligntrue plugs set docs.url "https://docs.myproject.com"Overlays (severity adjustments):
aligntrue override add \
--selector 'rule[id=no-console-log]' \
--set severity=warn # Downgrade from errorResult: Example align customized for your project without forking.
Scenario 3: Sharing rules across personal projects
Goal: Maintain consistent rules across multiple personal projects.
Option A: Git source (recommended for personal standards)
# 1. Create personal standards repo
mkdir my-standards
cd my-standards
git init
# 2. Create rules as markdown files
mkdir -p rules
cat > rules/coding-standards.md <<EOF
---
title: My Custom Coding Standard
---
# My custom coding standard
Always do X because Y. This rule applies to all TypeScript files.
## Guidelines
- Prefer explicit types over any
- Use meaningful variable names
- Add comments for complex logic
EOF
# 3. Commit and push
git add rules/
git commit -m "Initial standards"
git remote add origin https://github.com/you/my-standards
git push -u origin main
# 4. Use in projects
cd ~/projects/project-a
aligntrue init
# Add to .aligntrue/config.yaml:
sources:
- type: git
url: https://github.com/you/my-standards
ref: main
path: rules
aligntrue syncOption B: Local align (quick iteration)
# 1. Create local rules directory
mkdir -p ~/.aligntrue/rules
cat > ~/.aligntrue/rules/my-standards.md <<EOF
---
title: My Custom Coding Standard
---
# My custom coding standard
Always do X because Y.
EOF
# 2. Copy to projects
cp ~/.aligntrue/rules/my-standards.md ~/projects/project-a/.aligntrue/rules/
# 3. Sync
cd ~/projects/project-a
aligntrue syncResult: Consistent rules across all personal projects.
Scenario 4: Customizing third-party Aligns
Goal: Use community align but adjust for personal preferences.
Steps:
# 1. Pull third-party align
# .aligntrue/rules:
sources:
- type: git
url: https://github.com/community/typescript-standards
ref: v1.0.0
# 2. Sync to see what you get
aligntrue sync
# 3. Adjust severity for personal preference
aligntrue override add \
--selector 'rule[id=strict-null-checks]' \
--set severity=warn # Too strict for personal projects
# 4. Customize test command
aligntrue plugs set test.cmd "pnpm test"
# 5. Sync with customizations
aligntrue syncResult: Community align customized without forking.
Scenario 5: Managing multiple stacks (monorepo)
Goal: Different rules for frontend vs backend in personal monorepo.
Structure:
my-monorepo/
├── apps/
│ └── web/ # Next.js
└── packages/
└── api/ # Node.jsConfiguration:
# .aligntrue/config.yaml
sources:
- type: git
url: https://github.com/org/base-rules
ref: v1.0.0
- type: git
url: https://github.com/org/nextjs-rules
ref: v1.0.0
- type: git
url: https://github.com/org/node-rules
ref: v1.0.0
scopes:
- path: "apps/web"
include: ["**/*.ts", "**/*.tsx"]
rulesets: ["base-rules", "nextjs-rules"]
- path: "packages/api"
include: ["**/*.ts"]
rulesets: ["base-rules", "node-rules"]
plugs:
fills:
test.cmd: "pnpm test"Workflow:
# 1. Set up scopes in config
# (edit .aligntrue/config.yaml as above)
# 2. Sync
aligntrue sync
# 3. Verify scopes
aligntrue scopes
# Output:
# apps/web: base-rules, nextjs-rules
# packages/api: base-rules, node-rulesResult: Each directory gets appropriate stack-specific rules.
Customization patterns
When to use plugs
Use plugs for:
- Test commands that vary by stack
- File paths specific to your project
- URLs, author names, project metadata
Example:
# Set test command
aligntrue plugs set test.cmd "pnpm test"
# Set author name
aligntrue plugs set author.name "Your Name"
# Set docs URL
aligntrue plugs set docs.url "https://docs.yourproject.com"When to use overlays
Use overlays for:
- Adjusting severity for personal preference
- Temporarily disabling strict rules during refactoring
- Customizing third-party Aligns without forking
Example:
# Downgrade severity during refactoring
aligntrue override add \
--selector 'rule[id=strict-null-checks]' \
--set severity=warn
# Disable autofix that conflicts with your workflow
aligntrue override add \
--selector 'rule[id=prefer-const]' \
--remove autofixWhen to use scopes
Use scopes for:
- Monorepos with multiple stacks
- Different rules for new vs legacy code
- Progressive adoption of stricter rules
Example:
scopes:
# Strict rules for new code
- path: "src/new"
rulesets: ["typescript-strict"]
# Lenient rules for legacy code
- path: "src/legacy"
rulesets: ["typescript-lenient"]Tips and best practices
Keep rules simple and focused
Good:
rules:
- id: test-before-commit
summary: Run tests before committing
guidance: Run [[plug:test.cmd]] before committing
applies_to: ["**/*.ts"]Bad:
rules:
- id: complex-rule
summary: Do many things
guidance: |
Step 1: Do X
Step 2: Do Y
Step 3: Do Z
Step 4: Do A
# ... 50 more stepsWhy: Simple rules are easier to understand and maintain.
Backup before major changes
# Create a manual backup (includes agent exports)
aligntrue backup create --notes "before-major-refactor"
# Make changes
# ... edit rules, add overlays, etc ...
# If something breaks, restore
aligntrue backup restore --timestamp <backup-id>Document your decisions
Use YAML comments to explain customizations:
overlays:
overrides:
# Personal preference: Warnings instead of errors during development
# Will upgrade to error once codebase is clean
- selector: "rule[id=strict-null-checks]"
set:
severity: "warn"
plugs:
fills:
# Using pnpm for all personal projects
test.cmd: "pnpm test"Version control your rules
# Add to git
git add .aligntrue/
git commit -m "chore: Add AlignTrue rules"
# .gitignore (optional)
.aligntrue/.cache/ # Cache directory
.aligntrue/privacy-consent.json # Per-machine consentWhat to commit:
.aligntrue/rules- Source of truth (edit here).aligntrue/config.yaml- Configuration settingsAGENTS.md- Exported rules for agents (read-only, optional to track).cursor/rules/- Exported Cursor rules (read-only, optional)
What NOT to commit:
.aligntrue/.cache/- Cache directory.aligntrue/privacy-consent.json- Per-machine consent.aligntrue/lock.json- Only present in team mode
Common pitfalls and solutions
Pitfall 1: Unresolved required plugs
Problem: Sync fails with “Unresolved required plugs”
Solution:
# 1. Audit plugs
aligntrue plugs list
# 2. Set missing plugs
aligntrue plugs set test.cmd "pnpm test"
# 3. Sync again
aligntrue syncPitfall 2: Too many overlays
Problem: Maintaining many overlays becomes tedious
Solution: Fork the align or create your own:
# Instead of 20 overlays, create your own rules
mkdir -p .aligntrue/rules
cat > .aligntrue/rules/my-custom.md <<EOF
---
title: My Custom Rules
---
# My custom rules
Your customized rules here.
EOF
# Rules in .aligntrue/rules/ are automatically used
aligntrue syncPitfall 3: Forgetting to sync after changes
Problem: Rules changed but agents not updated
Solution: Always sync after changes:
# After editing rules
aligntrue sync
# After setting plugs
aligntrue plugs set test.cmd "pnpm test"
aligntrue sync
# After adding overlays
aligntrue override add --selector '...' --set severity=warn
aligntrue syncTip: Create an alias:
# ~/.bashrc or ~/.zshrc
alias async='aligntrue sync'Pitfall 4: Not using version control
Problem: Lost rules after system crash or accidental deletion
Solution: Commit rules to git:
git add .aligntrue/
git commit -m "chore: Update AlignTrue rules"Pitfall 5: Overcomplicating setup
Problem: Spending too much time configuring instead of coding
Solution: Start simple:
# Minimal setup (60 seconds)
aligntrue init
aligntrue sync
# Add customizations incrementally as needed
# Don't try to perfect everything upfrontWorkflow examples
Example 1: Quick project setup
# 1. Create project
mkdir my-app && cd my-app
git init
# 2. Initialize AlignTrue
aligntrue init
# Select: cursor, base-global, nextjs
# 3. Set test command
aligntrue plugs set test.cmd "pnpm test"
# 4. Sync
aligntrue sync
# 5. Start coding
cursor .Time: 60 seconds
Example 2: Experiment with rules
# 1. Create backup
aligntrue backup create --notes "before-experiment"
# 2. Try different severity
aligntrue override add \
--selector 'rule[id=no-console-log]' \
--set severity=off
# 3. Sync and test
aligntrue sync
# ... code and see how it feels ...
# 4. If you don't like it, restore
aligntrue backup restore --timestamp <backup-id>Example 3: Share rules with friend
# 1. Push rules to GitHub
git add .aligntrue/
git commit -m "Add AlignTrue rules"
git push
# 2. Friend clones and syncs
git clone https://github.com/you/my-project
cd my-project
aligntrue sync
# 3. Friend gets same rulesUpgrading to team mode (optional)
If you start collaborating, upgrade to team mode:
# Enable team mode
aligntrue team enable
# Creates:
# - .aligntrue/lock.json (lockfile for reproducibility)
# Commit team files
git add .aligntrue/lock.json
git commit -m "Enable AlignTrue team mode"See Team Guide for team collaboration workflows.
Related documentation
- Customization Overview - Plugs, overlays, and scopes
- Plugs Guide - Stack-specific values
- Overlays Guide - Rule customization
- Scopes Guide - Monorepo support
- CLI Reference - Complete command docs
- Team Guide - Upgrade to team collaboration
Summary
Solo developer workflow:
- Quick setup -
aligntrue init(auto-sync, 60 seconds) - Customize - Use plugs, overlays, and scopes as needed
- Iterate fast - No team overhead
- Version control - Commit rules to git
- Share easily - Git source or local Aligns
Key principles:
- Start simple, add complexity only when needed
- Use example Aligns as starting point
- Customize with plugs, overlays, and scopes
- Document decisions with comments
- Version control your rules
Next steps:
- Browse example Aligns for curated examples
- Read customization guides for advanced patterns
- Join community for align sharing and support