File Structure

Generated file layout per vendor and directory organization

Fulcrum uses a single source of truth in ai-tools/ that generates vendor-specific configuration files. Understanding this structure is key to customizing and maintaining your setup.

šŸ’” Golden rule: Edit files in ai-tools/, then run npm run fulcrum:generate. Never edit generated vendor files directly.

Directory Overview

your-project/
ā”œā”€ā”€ ai-tools/              # āœļø EDIT HERE - Canonical source
│   ā”œā”€ā”€ config.json        # Main configuration
│   ā”œā”€ā”€ agents/            # Agent definitions
│   ā”œā”€ā”€ commands/          # Slash command docs
│   ā”œā”€ā”€ skills/            # Skill definitions
│   └── prompts/           # System prompts
│
ā”œā”€ā”€ .claude/               # šŸ”„ GENERATED - Claude Code
ā”œā”€ā”€ .cursorrules           # šŸ”„ GENERATED - Cursor
ā”œā”€ā”€ .windsurf/             # šŸ”„ GENERATED - Windsurf
ā”œā”€ā”€ .gemini/               # šŸ”„ GENERATED - Gemini CLI
│
ā”œā”€ā”€ agent_docs/            # āœļø EDIT HERE - Memory Bank
│   ā”œā”€ā”€ projectBrief.md
│   ā”œā”€ā”€ productContext.md
│   └── ...
│
└── .beads/                # šŸ”„ MANAGED - Work tracking
    ā”œā”€ā”€ index.json
    └── items/

ai-tools/ (Canonical Source)

This is your single source of truth. All customizations go here.

ai-tools/
ā”œā”€ā”€ config.json              # Configuration (vendors, agents, presets)
│
ā”œā”€ā”€ agents/
│   ā”œā”€ā”€ core/                # Built-in agents
│   │   ā”œā”€ā”€ work-orchestrator.md
│   │   ā”œā”€ā”€ product-manager.md
│   │   ā”œā”€ā”€ tech-lead.md
│   │   ā”œā”€ā”€ frontend-engineer.md
│   │   ā”œā”€ā”€ backend-engineer.md
│   │   ā”œā”€ā”€ database-engineer.md
│   │   ā”œā”€ā”€ ai-engineer.md
│   │   ā”œā”€ā”€ devops-engineer.md
│   │   ā”œā”€ā”€ firmware-engineer.md
│   │   ā”œā”€ā”€ qa-backend.md
│   │   ā”œā”€ā”€ qa-frontend.md
│   │   ā”œā”€ā”€ qa-firmware.md
│   │   └── domain-expert.md
│   │
│   └── custom/              # Your custom agents
│       ā”œā”€ā”€ auth-specialist.md
│       └── graphql-expert.md
│
ā”œā”€ā”€ commands/
│   ā”œā”€ā”€ start.md             # /start command
│   ā”œā”€ā”€ execute-work.md      # /execute-work command
│   ā”œā”€ā”€ plan-execution.md    # /plan-execution command
│   ā”œā”€ā”€ create-work-item.md
│   ā”œā”€ā”€ start-work-item.md
│   ā”œā”€ā”€ update-work-item.md
│   ā”œā”€ā”€ close-work-item.md
│   ā”œā”€ā”€ handoff-work-item.md
│   ā”œā”€ā”€ request-review.md
│   ā”œā”€ā”€ setup-fulcrum.md
│   ā”œā”€ā”€ setup-beads.md
│   ā”œā”€ā”€ generate-agent.md
│   ā”œā”€ā”€ manage-agents.md
│   └── sync-handbook.md
│
ā”œā”€ā”€ skills/
│   ā”œā”€ā”€ project/             # Project-level skills
│   │   ā”œā”€ā”€ code-reviewer.md
│   │   ā”œā”€ā”€ test-engineer.md
│   │   └── pr-creator.md
│   │
│   └── user/                # User-level skills
│       ā”œā”€ā”€ brainstorming.md
│       ā”œā”€ā”€ systematic-debugging.md
│       └── test-driven-development.md
│
└── prompts/
    ā”œā”€ā”€ system.md            # Base system prompt
    ā”œā”€ā”€ rules.md             # Core rules and guidelines
    └── workflows/           # Workflow-specific prompts
        ā”œā”€ā”€ inception.md
        └── execution.md

What to Edit

File/DirectoryWhen to Edit
config.jsonChange vendors, agents, or presets
agents/custom/Add or modify custom agents
skills/user/Add personal workflow skills
prompts/Customize system behavior (advanced)
āš ļø Don't edit: Files in agents/core/ or commands/are managed by Fulcrum. Your changes will be overwritten on upgrade.

.claude/ (Claude Code)

Generated configuration for Claude Code (formerly Claude Dev).

.claude/
ā”œā”€ā”€ settings.json            # Claude workspace settings
ā”œā”€ā”€ commands/                # Slash commands as Claude commands
│   ā”œā”€ā”€ start.md
│   ā”œā”€ā”€ execute-work.md
│   └── ...
ā”œā”€ā”€ agents/                  # Agent personas
│   ā”œā”€ā”€ work-orchestrator.md
│   └── ...
└── CLAUDE.md                # Main instructions file

Key Files

FilePurpose
CLAUDE.mdPrimary instructions Claude reads on startup
settings.jsonWorkspace configuration for Claude
commands/Slash commands available in Claude

.cursorrules (Cursor)

A single file containing all rules and agent personas for Cursor.

.cursorrules                 # Single file with all configuration
# Contains:
# - System prompt and rules
# - Agent personas (as sections)
# - Coding guidelines
# - Project-specific instructions
šŸ“ Note: Cursor uses a single .cursorrules file rather than a directory structure. All agents and rules are concatenated into this one file.

.windsurf/ (Windsurf)

Generated configuration for Windsurf's Cascade feature.

.windsurf/
ā”œā”€ā”€ cascade.json             # Cascade configuration
ā”œā”€ā”€ rules/                   # Rule definitions
│   ā”œā”€ā”€ system.md
│   └── agents/
│       ā”œā”€ā”€ work-orchestrator.md
│       └── ...
└── workflows/               # Workflow templates

.gemini/ (Gemini CLI)

Generated configuration for Google's Gemini CLI.

.gemini/
ā”œā”€ā”€ config.json              # Gemini workspace config
ā”œā”€ā”€ instructions.md          # Main instructions
└── agents/                  # Agent definitions
    ā”œā”€ā”€ work-orchestrator.md
    └── ...

agent_docs/ (Memory Bank)

The Memory Bank stores persistent project knowledge that survives across sessions.

agent_docs/
ā”œā”€ā”€ projectBrief.md          # Project overview and goals
ā”œā”€ā”€ productContext.md        # Product requirements and user needs
ā”œā”€ā”€ systemPatterns.md        # Architecture patterns and decisions
ā”œā”€ā”€ techContext.md           # Technical stack and constraints
ā”œā”€ā”€ activeContext.md         # Current work and focus areas
ā”œā”€ā”€ progress.md              # Development progress log
│
ā”œā”€ā”€ specs/                   # Feature specifications
│   ā”œā”€ā”€ auth-system.md
│   └── payment-integration.md
│
ā”œā”€ā”€ decisions/               # Architecture Decision Records
│   ā”œā”€ā”€ 001-database-choice.md
│   └── 002-api-design.md
│
└── learnings/               # Project-specific learnings
    ā”œā”€ā”€ performance-gotchas.md
    └── testing-patterns.md

Core Files

FilePurposeUpdated By
projectBrief.mdHigh-level project descriptionYou (once)
productContext.mdUser needs, personas, requirementsPM agent
systemPatterns.mdArchitecture patterns in useTech Lead agent
techContext.mdTech stack, dependencies, constraintsTech Lead agent
activeContext.mdCurrent sprint/focusOrchestrator
progress.mdWhat's been doneAll agents
šŸ’” Pro tip: Keep projectBrief.md concise (under 500 words). It's loaded into every agent's context, so brevity matters.

.beads/ (Work Tracking)

The Beads distributed issue tracker for work item management.

.beads/
ā”œā”€ā”€ index.json               # Work item index
ā”œā”€ā”€ config.json              # Beads configuration
│
ā”œā”€ā”€ items/                   # Individual work items
│   ā”œā”€ā”€ bd-auth.1.json       # Feature: Add OAuth
│   ā”œā”€ā”€ bd-auth.2.json       # Task: Backend API
│   ā”œā”€ā”€ bd-auth.3.json       # Task: Frontend UI
│   └── bd-bug.1.json        # Bug: Token refresh
│
ā”œā”€ā”€ projects/                # Project definitions
│   └── auth.json
│
└── mail/                    # Agent async communication
    ā”œā”€ā”€ inbox/
    └── outbox/

Work Item Structure

// .beads/items/bd-auth.1.json
{
  "id": "bd-auth.1",
  "title": "Add OAuth integration",
  "type": "feature",
  "status": "in_progress",
  "priority": "P1",
  "assignee": "backend-engineer",
  "dependencies": [],
  "children": ["bd-auth.2", "bd-auth.3"],
  "created": "2024-01-15T10:30:00Z",
  "updated": "2024-01-15T14:22:00Z"
}
šŸ“ Note: Beads files are managed by the bd CLI and Fulcrum commands. You can inspect them but shouldn't edit directly.

.gitignore Recommendations

What to commit vs ignore:

# COMMIT these (shared team configuration)
ai-tools/
.claude/
.cursorrules
.windsurf/
.gemini/
agent_docs/

# IGNORE these (local/runtime state)
.beads/mail/           # Agent communication (ephemeral)

# CONSIDER (depends on team workflow)
.beads/items/          # Commit if you want issue history in git
.beads/index.json      # Commit if you want issue state shared

Edit → Generate → Commit

The standard workflow for configuration changes:

# 1. Edit the canonical source
vim ai-tools/config.json

# 2. Regenerate vendor files
npm run fulcrum:generate

# 3. Review changes
git diff

# 4. Commit everything
git add ai-tools/ .claude/ .cursorrules .windsurf/ .gemini/
git commit -m "chore: update Fulcrum configuration"

Monorepo Structure

For monorepos, Fulcrum supports per-package configuration:

monorepo/
ā”œā”€ā”€ ai-tools/                # Root-level shared config
│   ā”œā”€ā”€ config.json
│   └── agents/
│
ā”œā”€ā”€ packages/
│   ā”œā”€ā”€ web-app/
│   │   └── ai-tools/        # Package-specific overrides
│   │       └── config.json
│   │
│   └── api-server/
│       └── ai-tools/
│           └── config.json
│
ā”œā”€ā”€ .claude/                 # Generated from root
└── agent_docs/              # Shared Memory Bank
šŸ’” Monorepo tip: Use root-level ai-tools/ for shared agents and package-level overrides for package-specific configuration.

Troubleshooting

IssueCauseSolution
Changes not appearing in AIForgot to regenerateRun npm run fulcrum:generate
Custom agent missingNot in config.jsonAdd to agents.selected array
Vendor files out of syncManual edits to generated filesDelete and regenerate
Memory Bank not loadingMissing agent_docs/Run /setup-fulcrum
Beads errorsCorrupted indexRun bd repair