citadel-ai 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -143
- package/dist/cli/ide-rules.d.ts +2 -0
- package/dist/cli/ide-rules.js +127 -140
- package/dist/cli/ide-rules.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/init.js +71 -27
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/run.js +32 -10
- package/dist/cli/run.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Command Intelligence Tower for Architected Development with Enforced Layers**
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> A governance framework for AI-assisted building. 42 agents. Phased context. Maker ≠ Checker. You describe, they build — with structure.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/citadel-ai)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -11,189 +11,131 @@
|
|
|
11
11
|
|
|
12
12
|
## What is CITADEL?
|
|
13
13
|
|
|
14
|
-
CITADEL is
|
|
14
|
+
CITADEL is not "42 AI agents that build your app." It's a **governance framework** that turns your AI IDE into a structured engineering team — with roles, rules, gates, and separation of duties.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
It installs into your project and works with **any AI IDE**: Claude Code, Cursor, Antigravity, Windsurf.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npx citadel-ai init
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Open your IDE. Start talking. The AI already knows the rules.
|
|
23
|
+
|
|
24
|
+
### What CITADEL actually is
|
|
25
|
+
|
|
26
|
+
- An **OS for AI-assisted building** — rules, phases, gates injected into your IDE
|
|
27
|
+
- **42 agent personas** with distinct roles, philosophies, and immutable rules
|
|
28
|
+
- An **orchestrator** that routes work based on the current phase
|
|
29
|
+
- **Phased context loading** — only the relevant team is loaded, not all 42 agents
|
|
30
|
+
- **Persistent memory** — decisions, errors, and state survive across sessions
|
|
31
|
+
|
|
32
|
+
### What CITADEL is not (yet)
|
|
33
|
+
|
|
34
|
+
- Not a fully autonomous AI swarm
|
|
35
|
+
- Not a replacement for a real dev team when you need to scale
|
|
36
|
+
- Not a polished SaaS product — it's an open-source framework in active development
|
|
23
37
|
|
|
24
38
|
---
|
|
25
39
|
|
|
26
40
|
## Quick Start
|
|
27
41
|
|
|
28
42
|
```bash
|
|
29
|
-
# 1. Go to your project folder
|
|
30
43
|
cd my-project
|
|
31
|
-
|
|
32
|
-
# 2. Install CITADEL
|
|
33
44
|
npx citadel-ai init
|
|
34
|
-
|
|
35
|
-
# 3. Open your IDE and start building
|
|
36
45
|
```
|
|
37
46
|
|
|
38
|
-
After init, CITADEL creates
|
|
47
|
+
After init, CITADEL creates:
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
```
|
|
50
|
+
your-project/
|
|
51
|
+
├── CLAUDE.md ← Rules for Claude Code (auto-loaded)
|
|
52
|
+
├── GEMINI.md ← Rules for Antigravity (auto-loaded)
|
|
53
|
+
├── .cursorrules ← Rules for Cursor (auto-loaded)
|
|
54
|
+
├── .windsurfrules ← Rules for Windsurf (auto-loaded)
|
|
55
|
+
├── .claude/commands/ ← Slash commands (/citadel-help, etc.)
|
|
56
|
+
├── .cursor/commands/ ← Slash commands
|
|
57
|
+
├── .antigravity/rules.md ← Antigravity backup rules
|
|
58
|
+
├── .citadel/
|
|
59
|
+
│ ├── agents/ ← 42 full agent persona files (.md)
|
|
60
|
+
│ ├── teams/ ← 10 team files (phased loading for IDE)
|
|
61
|
+
│ │ ├── c-suite.md ← Loaded at Inception
|
|
62
|
+
│ │ ├── cto-makers.md ← Loaded at Build
|
|
63
|
+
│ │ ├── cto-checkers.md ← Loaded at Review
|
|
64
|
+
│ │ └── ...
|
|
65
|
+
│ ├── specs/ ← PRD, ADR, Security, Data Model, Growth
|
|
66
|
+
│ ├── memory/ ← Session state, decisions, errors (gitignored)
|
|
67
|
+
│ └── gates/ ← Gate progress tracking (gitignored)
|
|
68
|
+
└── .gitignore ← Updated automatically
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| IDE | Rules file | How to start |
|
|
72
|
+
|-----|-----------|--------------|
|
|
73
|
+
| Claude Code | `CLAUDE.md` + `/citadel-help` | Slash commands |
|
|
74
|
+
| Cursor | `.cursorrules` + `/citadel-help` | Slash commands |
|
|
44
75
|
| Antigravity | `GEMINI.md` | Just start chatting |
|
|
45
76
|
| Windsurf | `.windsurfrules` | Just start chatting |
|
|
46
77
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Most AI coding tools are a single brain doing everything. CITADEL is an **organization**.
|
|
54
|
-
|
|
55
|
-
| Feature | Single AI | CITADEL |
|
|
56
|
-
|---------|-----------|---------|
|
|
57
|
-
| Architecture decisions | Vibes | ADRs reviewed by CTO agent |
|
|
58
|
-
| Security | Hope | CISO with **absolute veto power** |
|
|
59
|
-
| Code quality | Maybe | Chinese Wall: Maker ≠ Checker |
|
|
60
|
-
| Testing | Optional | 80% coverage minimum, test pyramid enforced |
|
|
61
|
-
| Data design | Inline | Schema-first, 3NF minimum, FK on every relationship |
|
|
62
|
-
| Memory | None | Persistent memory across sessions |
|
|
63
|
-
| Progress | Unknown | 5 mandatory gates with explicit sign-offs |
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## The 42 Agents
|
|
68
|
-
|
|
69
|
-
### Command Layer (1)
|
|
70
|
-
|
|
71
|
-
| Agent | Role | Inspiration |
|
|
72
|
-
|-------|------|-------------|
|
|
73
|
-
| ⚡ **ATLAS** | Orchestrator | Andy Grove |
|
|
74
|
-
|
|
75
|
-
### C-Suite (5)
|
|
76
|
-
|
|
77
|
-
| Agent | Role | Inspiration | Superpower |
|
|
78
|
-
|-------|------|-------------|------------|
|
|
79
|
-
| 🏗️ **LINUS** | CTO | Linus Torvalds + Martin Fowler | Architecture, ADRs, tech stack |
|
|
80
|
-
| 🎯 **MARTY** | CPO | Marty Cagan | PRDs, user stories, scope |
|
|
81
|
-
| 📈 **SEAN** | CGO | Sean Ellis + Andrew Chen | Growth, analytics, SEO |
|
|
82
|
-
| 🛡️ **BRUCE** | CISO | Bruce Schneier | **ABSOLUTE VETO POWER** |
|
|
83
|
-
| 🗄️ **MONICA** | CDO | Monica Rogati | Data architecture, AI/ML |
|
|
84
|
-
|
|
85
|
-
### Maker Teams (20 builders)
|
|
86
|
-
|
|
87
|
-
**CTO Team:** ⚙️ UNCLE BOB (Backend) · 🎨 DAN (Frontend) · 📱 STEIPETE (Mobile) · 🚀 KELSEY (DevOps) · 📡 GRACE (API Design) · 🔭 CHARITY (Observability)
|
|
88
|
-
|
|
89
|
-
**CPO Team:** ✏️ JONY (UX) · 📊 TERESA (Analyst) · 📝 STRUNK (Spec Writer) · 📚 RICH (Documentation)
|
|
90
|
-
|
|
91
|
-
**CGO Team:** 📉 DJ PATIL (Analytics) · 🔎 CYRUS (SEO) · 🧬 CHAMATH (Growth)
|
|
92
|
-
|
|
93
|
-
**CISO Team:** 🔐 FILIPPO (Auth) · 🔒 MOXIE (Encryption) · 📋 MAX (Compliance)
|
|
94
|
-
|
|
95
|
-
**CDO Team:** 🏛️ CODD (Data Architect) · 🤖 KARPATHY (ML/AI) · 🧠 HARRISON (Agentic AI) · 🔌 ALEX (MCP)
|
|
96
|
-
|
|
97
|
-
### Checker Teams (16 validators)
|
|
98
|
-
|
|
99
|
-
**CTO Checkers:** 🔍 GUIDO (Code Review) · 🧪 KENT (Tests) · ⚡ BRENDAN (Performance)
|
|
100
|
-
|
|
101
|
-
**CPO Checkers:** 👁️ JAKOB (UX Review) · 📏 RAZOR (Scope) · ✅ LISA (Acceptance) · ♿ AARON (Accessibility)
|
|
102
|
-
|
|
103
|
-
**CGO Checkers:** ✔️ NATE (Data Validation) · 🕷️ ALEYDA (SEO Audit) · 🎯 PEEP (Conversion)
|
|
104
|
-
|
|
105
|
-
**CISO Checkers:** ⚔️ CHARLIE (Pentest) · 🔬 WINDOW (Security Audit) · 📜 TRAIL (Audit Trail)
|
|
106
|
-
|
|
107
|
-
**CDO Checkers:** 🧐 DATE (Schema Review) · 🏅 DEMING (Data Quality) · 🔄 FLYWAY (Migration)
|
|
78
|
+
For the interactive CLI (optional):
|
|
79
|
+
```bash
|
|
80
|
+
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY
|
|
81
|
+
npx citadel-ai run
|
|
82
|
+
```
|
|
108
83
|
|
|
109
84
|
---
|
|
110
85
|
|
|
111
|
-
## Core
|
|
86
|
+
## The Core Idea
|
|
112
87
|
|
|
113
|
-
|
|
88
|
+
Most AI coding tools are one brain doing everything. CITADEL is an **organization**.
|
|
114
89
|
|
|
115
|
-
|
|
90
|
+
### 1. Organization > Single Agent
|
|
116
91
|
|
|
117
|
-
|
|
92
|
+
| Layer | Agents | Role |
|
|
93
|
+
|-------|--------|------|
|
|
94
|
+
| Command | ⚡ ATLAS | Orchestrates, routes, explains |
|
|
95
|
+
| C-Suite | 🏗️ LINUS (CTO), 🎯 MARTY (CPO), 📈 SEAN (CGO), 🛡️ BRUCE (CISO), 🗄️ MONICA (CDO) | Strategic decisions |
|
|
96
|
+
| Makers (20) | UNCLE BOB, DAN, STEIPETE, KELSEY, JONY, FILIPPO, CODD, KARPATHY, HARRISON, ALEX, GRACE, CHARITY, RICH... | Build |
|
|
97
|
+
| Checkers (16) | GUIDO, KENT, BRENDAN, JAKOB, CHARLIE, AARON, ALEYDA, DATE, DEMING, FLYWAY, TRAIL... | Validate |
|
|
118
98
|
|
|
119
|
-
|
|
99
|
+
Each agent has a name, inspiration (Linus Torvalds, Kent Beck, Bruce Schneier...), philosophy, voice, and immutable rules. Full personas in `.citadel/agents/`.
|
|
120
100
|
|
|
121
|
-
###
|
|
101
|
+
### 2. Governance Before Speed
|
|
122
102
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
| Gate 3 | **Pre-Ship** | All checkers PASS + CISO veto |
|
|
129
|
-
| Gate 4 | **Post-Deploy** | Auto-rollback if critical metrics degrade |
|
|
103
|
+
- **Questions before specs** — C-Suite asks questions BEFORE drafting anything
|
|
104
|
+
- **5 mandatory gates** — Inception → Pre-Design → Pre-Build → Pre-Ship → Post-Deploy
|
|
105
|
+
- **Chinese Wall** — Maker ≠ Checker. The builder never reviews their own work
|
|
106
|
+
- **CISO veto** — BRUCE can block any deployment. No override possible
|
|
107
|
+
- **Code standards in agent DNA** — TS strict, 200 lines/file, 30 lines/function, 80% test coverage, anti-patterns auto-rejected
|
|
130
108
|
|
|
131
|
-
###
|
|
109
|
+
### 3. Phased Context Loading
|
|
132
110
|
|
|
133
|
-
|
|
134
|
-
.citadel/
|
|
135
|
-
├── agents/ # 42 agent persona files (readable by IDE)
|
|
136
|
-
├── specs/ # PRD, ADR, security, data model, growth
|
|
137
|
-
├── memory/ # Session state, decisions, errors
|
|
138
|
-
└── gates/ # Gate progress tracking
|
|
139
|
-
```
|
|
111
|
+
The IDE doesn't load all 42 agents at once. It loads only the team needed for the current phase:
|
|
140
112
|
|
|
141
|
-
|
|
113
|
+
| Phase | File loaded | Tokens |
|
|
114
|
+
|-------|------------|--------|
|
|
115
|
+
| Inception | `c-suite.md` | ~460 |
|
|
116
|
+
| Build (backend) | `cto-makers.md` | ~680 |
|
|
117
|
+
| Review (code) | `cto-checkers.md` | ~340 |
|
|
118
|
+
| Security audit | `ciso-all.md` | ~740 |
|
|
142
119
|
|
|
143
|
-
|
|
120
|
+
Rules file (`GEMINI.md` etc.): ~1,200 tokens — loaded every message.
|
|
144
121
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
your-project/
|
|
149
|
-
├── CLAUDE.md ← Rules for Claude Code
|
|
150
|
-
├── GEMINI.md ← Rules for Antigravity
|
|
151
|
-
├── .cursorrules ← Rules for Cursor
|
|
152
|
-
├── .windsurfrules ← Rules for Windsurf
|
|
153
|
-
├── .claude/commands/ ← Slash commands for Claude Code
|
|
154
|
-
│ ├── citadel-help.md
|
|
155
|
-
│ ├── citadel-build.md
|
|
156
|
-
│ ├── citadel-review.md
|
|
157
|
-
│ ├── citadel-security.md
|
|
158
|
-
│ └── citadel-status.md
|
|
159
|
-
├── .cursor/commands/ ← Slash commands for Cursor
|
|
160
|
-
├── .antigravity/ ← Rules for Antigravity
|
|
161
|
-
├── .citadel/
|
|
162
|
-
│ ├── agents/ ← 42 agent personas (.md files)
|
|
163
|
-
│ ├── specs/ ← PRD, ADR, Security, Data, Growth templates
|
|
164
|
-
│ ├── memory/ ← Persistent state (gitignored)
|
|
165
|
-
│ └── gates/ ← Gate tracking (gitignored)
|
|
166
|
-
└── .gitignore ← Updated to ignore state files
|
|
167
|
-
```
|
|
122
|
+
**Result: ~1,600–1,900 tokens per phase** instead of ~14,000 if everything was loaded. 88% reduction.
|
|
168
123
|
|
|
169
124
|
---
|
|
170
125
|
|
|
171
|
-
##
|
|
172
|
-
|
|
173
|
-
1. **You describe** what you want to build in plain language
|
|
174
|
-
2. **Your AI IDE** reads CITADEL rules and becomes a 42-agent team
|
|
175
|
-
3. **C-Suite agents** make strategic decisions (architecture, product, security, data, growth)
|
|
176
|
-
4. **Maker agents** build (backend, frontend, mobile, auth, data, etc.)
|
|
177
|
-
5. **Checker agents** validate (code review, tests, pentest, UX audit, etc.)
|
|
178
|
-
6. **Gates enforce** quality at every phase transition
|
|
126
|
+
## The 42 Agents
|
|
179
127
|
|
|
180
|
-
|
|
128
|
+
**CTO Team:** ⚙️ UNCLE BOB (Backend) · 🎨 DAN (Frontend) · 📱 STEIPETE (Mobile) · 🚀 KELSEY (DevOps) · 📡 GRACE (API Design) · 🔭 CHARITY (Observability)
|
|
181
129
|
|
|
182
|
-
|
|
130
|
+
**CPO Team:** ✏️ JONY (UX) · 📊 TERESA (Analyst) · 📝 STRUNK (Spec Writer) · 📚 RICH (Documentation)
|
|
183
131
|
|
|
184
|
-
|
|
132
|
+
**CGO Team:** 📉 DJ PATIL (Analytics) · 🔎 CYRUS (SEO) · 🧬 CHAMATH (Growth)
|
|
185
133
|
|
|
186
|
-
|
|
187
|
-
2. **Simplicity Over Cleverness** — The simplest solution that works
|
|
188
|
-
3. **Measurement Before Optimization** — Profile, don't guess
|
|
189
|
-
4. **Single Responsibility** — One function, one job
|
|
190
|
-
5. **Test-Driven Development** — Red → Green → Refactor
|
|
191
|
-
6. **Low Coupling, High Cohesion** — Modules that stand alone
|
|
192
|
-
7. **Evolutionary Design** — Architecture that adapts
|
|
134
|
+
**CISO Team:** 🔐 FILIPPO (Auth) · 🔒 MOXIE (Encryption) · 📋 MAX (Compliance)
|
|
193
135
|
|
|
194
|
-
|
|
136
|
+
**CDO Team:** 🏛️ CODD (Data Architect) · 🤖 KARPATHY (ML/AI) · 🧠 HARRISON (Agentic AI) · 🔌 ALEX (MCP)
|
|
195
137
|
|
|
196
|
-
|
|
138
|
+
**Checkers:** 🔍 GUIDO · 🧪 KENT · ⚡ BRENDAN · 👁️ JAKOB · 📏 RAZOR · ✅ LISA · ✔️ NATE · 🕷️ ALEYDA · 🎯 PEEP · ⚔️ CHARLIE · 🔬 WINDOW · 🧐 DATE · 🏅 DEMING · 🔄 FLYWAY · ♿ AARON · 📜 TRAIL
|
|
197
139
|
|
|
198
140
|
---
|
|
199
141
|
|
|
@@ -202,7 +144,7 @@ God Objects · Primitive Obsession · Long Parameter Lists · Magic Numbers · E
|
|
|
202
144
|
| Command | Description |
|
|
203
145
|
|---------|-------------|
|
|
204
146
|
| `npx citadel-ai init` | Install CITADEL in your project |
|
|
205
|
-
| `npx citadel-ai run` | Interactive CLI
|
|
147
|
+
| `npx citadel-ai run` | Interactive CLI (needs API key in env) |
|
|
206
148
|
| `npx citadel-ai agents` | List all 42 agents |
|
|
207
149
|
| `npx citadel-ai status` | Show current phase & gate |
|
|
208
150
|
| `npx citadel-ai help` | Show all commands |
|
|
@@ -211,7 +153,7 @@ God Objects · Primitive Obsession · Long Parameter Lists · Magic Numbers · E
|
|
|
211
153
|
|
|
212
154
|
## Contributing
|
|
213
155
|
|
|
214
|
-
CITADEL is built for
|
|
156
|
+
CITADEL is built for people who build with AI without being traditional developers. If that's you, you're welcome here.
|
|
215
157
|
|
|
216
158
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
217
159
|
|
package/dist/cli/ide-rules.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
declare function writeTeamFiles(citadelPath: string): void;
|
|
1
2
|
export declare function installClaudeCode(projectPath: string): void;
|
|
2
3
|
export declare function installCursor(projectPath: string): void;
|
|
3
4
|
export declare function installAntigravity(projectPath: string): void;
|
|
4
5
|
export declare function installWindsurf(projectPath: string): void;
|
|
5
6
|
export declare function installAllIDEs(projectPath: string): void;
|
|
7
|
+
export { writeTeamFiles };
|
package/dist/cli/ide-rules.js
CHANGED
|
@@ -1,198 +1,184 @@
|
|
|
1
1
|
// ═══════════════════════════════════════════════════════════════
|
|
2
|
-
// CITADEL — IDE Rules Generator (
|
|
2
|
+
// CITADEL — IDE Rules Generator (Phased Context Loading)
|
|
3
3
|
// ═══════════════════════════════════════════════════════════════
|
|
4
4
|
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import { getAgentCount, getAgentsByLevel } from '../agents/registry.js';
|
|
7
|
-
// ──
|
|
6
|
+
import { AGENT_REGISTRY, getAgentCount, getAgentsByLevel } from '../agents/registry.js';
|
|
7
|
+
// ── Compact agent line (minimal tokens) ──
|
|
8
|
+
function agentLine(a) {
|
|
9
|
+
return `- ${a.icon} **${a.name}** (${a.title}) — "${a.philosophy}"`;
|
|
10
|
+
}
|
|
11
|
+
// ── Team file content (loaded per phase) ──
|
|
12
|
+
function buildTeamFile(title, agents) {
|
|
13
|
+
let content = `# ${title}\n\n`;
|
|
14
|
+
for (const a of agents) {
|
|
15
|
+
content += `## ${a.icon} ${a.name} — ${a.title}\n`;
|
|
16
|
+
content += `> ${a.philosophy}\n\n`;
|
|
17
|
+
content += `**Voice:** ${a.voice}\n\n`;
|
|
18
|
+
content += `**Rules:**\n${a.rules.map(r => `- ${r}`).join('\n')}\n\n`;
|
|
19
|
+
}
|
|
20
|
+
return content;
|
|
21
|
+
}
|
|
22
|
+
// ── Master rules (SMALL — ~2500 tokens) ──
|
|
8
23
|
function buildRulesContent() {
|
|
9
24
|
const c = getAgentCount();
|
|
10
25
|
const csuite = getAgentsByLevel('c-suite');
|
|
26
|
+
// Only list agent names + roles (no full details)
|
|
11
27
|
const makers = getAgentsByLevel('maker');
|
|
12
28
|
const checkers = getAgentsByLevel('checker');
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
for (const a of checkers) {
|
|
27
|
-
agentRoster += `- **${a.icon} ${a.name} (${a.title})** — ${a.philosophy}\n`;
|
|
28
|
-
}
|
|
29
|
-
return `# 🏰 CITADEL — AI Development Framework
|
|
30
|
-
|
|
31
|
-
You are operating as CITADEL, a ${c.total}-agent AI development framework with enterprise-grade governance.
|
|
32
|
-
When the user asks you to build something, you embody the relevant agents below.
|
|
33
|
-
You ALWAYS follow the rules, gates, and Chinese Wall principles.
|
|
34
|
-
|
|
35
|
-
## YOUR IDENTITY
|
|
36
|
-
|
|
37
|
-
You are **ATLAS** (the Orchestrator). You route conversations to the right agent.
|
|
38
|
-
When you act as a specific agent, adopt their personality, voice, and rules.
|
|
39
|
-
Always tell the user which agent is speaking: "🏗️ LINUS (CTO): ..."
|
|
29
|
+
let rosterCompact = '### C-Suite\n';
|
|
30
|
+
for (const a of csuite)
|
|
31
|
+
rosterCompact += agentLine(a) + '\n';
|
|
32
|
+
rosterCompact += '\n### Makers (20)\n';
|
|
33
|
+
for (const a of makers)
|
|
34
|
+
rosterCompact += `- ${a.icon} ${a.name} (${a.title})\n`;
|
|
35
|
+
rosterCompact += '\n### Checkers (16)\n';
|
|
36
|
+
for (const a of checkers)
|
|
37
|
+
rosterCompact += `- ${a.icon} ${a.name} (${a.title})\n`;
|
|
38
|
+
return `# 🏰 CITADEL — ${c.total}-Agent AI Development Framework
|
|
39
|
+
|
|
40
|
+
You are ATLAS, the Orchestrator. You manage a ${c.total}-agent team organized like a real company.
|
|
41
|
+
When acting as an agent, state who you are: "${'\u2699\uFE0F'} UNCLE BOB (Backend Engineer): ..."
|
|
40
42
|
|
|
41
43
|
## CORE RULES (IMMUTABLE)
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
1. **Maker ≠ Checker (Chinese Wall)** — The builder CANNOT review their own work.
|
|
46
|
+
2. **CISO Veto** — BRUCE can block ANY deployment. No override possible.
|
|
47
|
+
3. **Questions before docs** — NEVER draft specs before asking the user questions.
|
|
48
|
+
4. **Code standards** — TS strict, 200 lines/file, 30 lines/function, 80% test coverage.
|
|
49
|
+
5. **Anti-patterns = auto-reject** — God Objects, Magic Numbers, Error Swallowing, Callback Hell.
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
BRUCE (CISO) can block ANY deployment for security reasons.
|
|
50
|
-
Always run a security check before shipping. If there's a critical vulnerability, STOP.
|
|
51
|
+
## THE AGENTS
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
Every project goes through these gates IN ORDER:
|
|
54
|
-
- **Gate 0 — Inception**: Define the problem, scope, tech stack. All C-levels sign off.
|
|
55
|
-
- **Gate 1 — Pre-Design**: PRD with user stories + acceptance criteria approved.
|
|
56
|
-
- **Gate 2 — Pre-Build**: Architecture Decision Record + data model + security review.
|
|
57
|
-
- **Gate 3 — Pre-Ship**: Code review + tests (80%+ coverage) + security audit + CISO sign-off.
|
|
58
|
-
- **Gate 4 — Post-Deploy**: Monitoring active, rollback plan tested.
|
|
53
|
+
${rosterCompact}
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
- TypeScript strict mode
|
|
62
|
-
- Max 200 lines per file, 30 lines per function
|
|
63
|
-
- Business logic in service layer ONLY (never in controllers or DB layer)
|
|
64
|
-
- Every public function has a test
|
|
65
|
-
- No magic numbers — use named constants
|
|
66
|
-
- Error handling: explicit, typed, never swallowed
|
|
55
|
+
## PHASED CONTEXT LOADING
|
|
67
56
|
|
|
68
|
-
|
|
69
|
-
If you detect these, flag them immediately:
|
|
70
|
-
God Objects, Primitive Obsession, Long Parameter Lists, Magic Numbers,
|
|
71
|
-
Error Swallowing, Callback Hell, Framework Coupling, Speculative Generality
|
|
57
|
+
⚠️ DO NOT read all agent files at once. Load ONLY what you need per phase:
|
|
72
58
|
|
|
73
|
-
|
|
59
|
+
| Phase | Read these files | Purpose |
|
|
60
|
+
|-------|-----------------|---------|
|
|
61
|
+
| Inception (Gate 0) | \`.citadel/teams/c-suite.md\` | C-levels ask questions, then draft specs |
|
|
62
|
+
| Pre-Design (Gate 1) | \`.citadel/teams/cpo-makers.md\` | Product team refines stories + UX |
|
|
63
|
+
| Pre-Build (Gate 2) | \`.citadel/teams/cto-makers.md\` + \`.citadel/teams/cdo-makers.md\` | Architecture + data model |
|
|
64
|
+
| Build | \`.citadel/teams/cto-makers.md\` + team needed | Makers build per domain |
|
|
65
|
+
| Review | \`.citadel/teams/cto-checkers.md\` + relevant checkers | Checkers validate |
|
|
66
|
+
| Security | \`.citadel/teams/ciso-all.md\` | Full security review |
|
|
67
|
+
| Ship (Gate 4) | \`.citadel/teams/cto-makers.md\` (KELSEY only) | Deploy |
|
|
74
68
|
|
|
75
|
-
|
|
69
|
+
Only read a team file when you ENTER that phase. Not before.
|
|
76
70
|
|
|
77
|
-
##
|
|
71
|
+
## WORKFLOW
|
|
78
72
|
|
|
79
|
-
###
|
|
73
|
+
### Phase 1: INCEPTION (Gate 0)
|
|
80
74
|
|
|
81
|
-
|
|
75
|
+
⚠️ NEVER DRAFT ANYTHING BEFORE ASKING QUESTIONS.
|
|
82
76
|
|
|
83
|
-
|
|
77
|
+
Read \`.citadel/teams/c-suite.md\` for agent details.
|
|
84
78
|
|
|
85
|
-
1. **ATLAS
|
|
79
|
+
1. **ATLAS** — "I'm convening the C-Suite."
|
|
80
|
+
2. **Each C-level asks 1-2 questions** (present ALL at once):
|
|
81
|
+
- 🎯 MARTY: Who is this for? What problem? Success metric?
|
|
82
|
+
- 🏗️ LINUS: Tech preferences? Scale? Existing code?
|
|
83
|
+
- 🛡️ BRUCE: User data? Auth? Compliance?
|
|
84
|
+
- 📈 SEAN: Discovery? Growth goals?
|
|
85
|
+
- 🗄️ MONICA: Data entities? Relationships? AI/ML?
|
|
86
|
+
3. **WAIT** for user answers. Do NOT proceed.
|
|
87
|
+
4. **AFTER answers** — Draft specs into \`.citadel/specs/\`
|
|
88
|
+
5. **Present summary** — "Does this look right?"
|
|
89
|
+
6. **Gate 0 PASS** — Only after user confirms.
|
|
86
90
|
|
|
87
|
-
|
|
91
|
+
### Phase 2: BUILD
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
- 🏗️ **LINUS (CTO)** asks about: Any tech preferences? Existing codebase? Scale requirements?
|
|
91
|
-
- 🛡️ **BRUCE (CISO)** asks about: User data involved? Auth needed? Compliance requirements?
|
|
92
|
-
- 📈 **SEAN (CGO)** asks about: How will users find this? Growth goals?
|
|
93
|
-
- 🗄️ **MONICA (CDO)** asks about: What data entities? Relationships? AI/ML needs?
|
|
93
|
+
Read the relevant team file for the current task. Not all teams.
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
1. Makers build (state which agent).
|
|
96
|
+
2. Code follows standards.
|
|
97
|
+
3. After building → switch to checkers (Chinese Wall).
|
|
96
98
|
|
|
97
|
-
|
|
98
|
-
- MARTY → PRD with user stories + acceptance criteria → writes to .citadel/specs/prd.md
|
|
99
|
-
- LINUS → ADR (architecture decisions) → writes to .citadel/specs/adr.md
|
|
100
|
-
- BRUCE → Security requirements → writes to .citadel/specs/security.md
|
|
101
|
-
- MONICA → Data model → writes to .citadel/specs/data-model.md
|
|
102
|
-
- SEAN → Growth strategy → writes to .citadel/specs/growth.md
|
|
99
|
+
### Phase 3: REVIEW
|
|
103
100
|
|
|
104
|
-
|
|
101
|
+
Read \`.citadel/teams/[domain]-checkers.md\` for the domain being reviewed.
|
|
105
102
|
|
|
106
|
-
|
|
103
|
+
1. GUIDO: code quality
|
|
104
|
+
2. KENT: tests (80%+)
|
|
105
|
+
3. BRENDAN: performance
|
|
106
|
+
4. CHARLIE: security (OWASP Top 10)
|
|
107
|
+
5. AARON: accessibility (WCAG 2.1 AA)
|
|
107
108
|
|
|
108
|
-
### Phase
|
|
109
|
+
### Phase 4: SHIP
|
|
109
110
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
3. Code follows the standards: TS strict, 200 lines/file max, 30 lines/function max
|
|
111
|
+
1. BRUCE: final sign-off or VETO
|
|
112
|
+
2. KELSEY: deploy (zero-downtime)
|
|
113
|
+
3. CHARITY: observability
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
4. CHARLIE runs security checks (OWASP Top 10)
|
|
122
|
-
5. JAKOB reviews UX (Nielsen's 10 Heuristics)
|
|
123
|
-
6. AARON checks accessibility (WCAG 2.1 AA)
|
|
124
|
-
|
|
125
|
-
### Phase 4: SHIP — Deployment
|
|
126
|
-
|
|
127
|
-
1. BRUCE (CISO) gives final sign-off or VETO
|
|
128
|
-
2. KELSEY handles deployment (zero-downtime, rollback ready)
|
|
129
|
-
3. CHARITY sets up observability (structured logs, traces, alerts)
|
|
130
|
-
|
|
131
|
-
## PROJECT CONTEXT
|
|
115
|
+
## COMMANDS
|
|
116
|
+
- "help" / "stuck" → Show status + next steps
|
|
117
|
+
- "status" → Gate progress
|
|
118
|
+
- "build [feature]" → Start build
|
|
119
|
+
- "review" → Run checkers
|
|
120
|
+
- "@[agent]" → Talk to specific agent
|
|
132
121
|
|
|
133
|
-
|
|
122
|
+
## SPECS
|
|
134
123
|
- \`.citadel/specs/prd.md\` — Product requirements
|
|
135
124
|
- \`.citadel/specs/adr.md\` — Architecture decisions
|
|
136
|
-
- \`.citadel/specs/security.md\` — Security
|
|
137
|
-
- \`.citadel/specs/data-model.md\` —
|
|
138
|
-
- \`.citadel/specs/growth.md\` — Growth
|
|
139
|
-
- \`.citadel/agents/\` — Detailed persona for each agent
|
|
140
|
-
|
|
141
|
-
## COMMANDS
|
|
142
|
-
The user can say:
|
|
143
|
-
- "help" or "stuck" → Explain where we are and what to do next
|
|
144
|
-
- "status" → Show current gate progress
|
|
145
|
-
- "build [feature]" → Start the build loop
|
|
146
|
-
- "review" → Run the checker team
|
|
147
|
-
- "@[agent-name]" → Talk to a specific agent (e.g., "@bruce security check")
|
|
125
|
+
- \`.citadel/specs/security.md\` — Security
|
|
126
|
+
- \`.citadel/specs/data-model.md\` — Data model
|
|
127
|
+
- \`.citadel/specs/growth.md\` — Growth
|
|
148
128
|
`;
|
|
149
129
|
}
|
|
130
|
+
// ── Write team files (phased loading) ──
|
|
131
|
+
function writeTeamFiles(citadelPath) {
|
|
132
|
+
const teamsDir = join(citadelPath, 'teams');
|
|
133
|
+
mkdirSync(teamsDir, { recursive: true });
|
|
134
|
+
const all = [...AGENT_REGISTRY.values()];
|
|
135
|
+
// C-Suite (loaded at inception)
|
|
136
|
+
writeFileSync(join(teamsDir, 'c-suite.md'), buildTeamFile('C-Suite — Strategic Leadership', all.filter(a => a.level === 'c-suite')), 'utf-8');
|
|
137
|
+
// CTO Makers (loaded at build)
|
|
138
|
+
writeFileSync(join(teamsDir, 'cto-makers.md'), buildTeamFile('CTO Team — Makers', all.filter(a => a.team === 'cto' && a.level === 'maker')), 'utf-8');
|
|
139
|
+
// CTO Checkers (loaded at review)
|
|
140
|
+
writeFileSync(join(teamsDir, 'cto-checkers.md'), buildTeamFile('CTO Team — Checkers', all.filter(a => a.team === 'cto' && a.level === 'checker')), 'utf-8');
|
|
141
|
+
// CPO Makers
|
|
142
|
+
writeFileSync(join(teamsDir, 'cpo-makers.md'), buildTeamFile('CPO Team — Makers', all.filter(a => a.team === 'cpo' && a.level === 'maker')), 'utf-8');
|
|
143
|
+
// CPO Checkers
|
|
144
|
+
writeFileSync(join(teamsDir, 'cpo-checkers.md'), buildTeamFile('CPO Team — Checkers', all.filter(a => a.team === 'cpo' && a.level === 'checker')), 'utf-8');
|
|
145
|
+
// CGO Makers
|
|
146
|
+
writeFileSync(join(teamsDir, 'cgo-makers.md'), buildTeamFile('CGO Team — Makers', all.filter(a => a.team === 'cgo' && a.level === 'maker')), 'utf-8');
|
|
147
|
+
// CGO Checkers
|
|
148
|
+
writeFileSync(join(teamsDir, 'cgo-checkers.md'), buildTeamFile('CGO Team — Checkers', all.filter(a => a.team === 'cgo' && a.level === 'checker')), 'utf-8');
|
|
149
|
+
// CISO All (loaded for security review)
|
|
150
|
+
writeFileSync(join(teamsDir, 'ciso-all.md'), buildTeamFile('CISO Team — Security (Makers + Checkers)', all.filter(a => a.team === 'ciso')), 'utf-8');
|
|
151
|
+
// CDO Makers
|
|
152
|
+
writeFileSync(join(teamsDir, 'cdo-makers.md'), buildTeamFile('CDO Team — Makers', all.filter(a => a.team === 'cdo' && a.level === 'maker')), 'utf-8');
|
|
153
|
+
// CDO Checkers
|
|
154
|
+
writeFileSync(join(teamsDir, 'cdo-checkers.md'), buildTeamFile('CDO Team — Checkers', all.filter(a => a.team === 'cdo' && a.level === 'checker')), 'utf-8');
|
|
155
|
+
}
|
|
150
156
|
// ── Install for each IDE ──
|
|
151
157
|
export function installClaudeCode(projectPath) {
|
|
152
|
-
// CLAUDE.md — auto-loaded by Claude Code
|
|
153
158
|
writeFileSync(join(projectPath, 'CLAUDE.md'), buildRulesContent(), 'utf-8');
|
|
154
|
-
// Slash commands
|
|
155
159
|
const cmdDir = join(projectPath, '.claude', 'commands');
|
|
156
160
|
mkdirSync(cmdDir, { recursive: true });
|
|
157
|
-
writeFileSync(join(cmdDir, 'citadel-help.md'), `You are ATLAS
|
|
158
|
-
writeFileSync(join(cmdDir, 'citadel-build.md'), `
|
|
159
|
-
writeFileSync(join(cmdDir, 'citadel-review.md'), `
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
- ⚡ BRENDAN: LCP < 2.5s, no N+1, bundle size
|
|
163
|
-
- ⚔️ CHARLIE: OWASP Top 10, auth, secrets
|
|
164
|
-
- ♿ AARON: WCAG 2.1 AA, keyboard nav, screen readers
|
|
165
|
-
Give PASS/FAIL per category with specific line references.`, 'utf-8');
|
|
166
|
-
writeFileSync(join(cmdDir, 'citadel-status.md'), `Read .citadel/memory/session.json and .citadel/gates/. Show a status dashboard: current phase, gate progress (checks passed/failed), active agents, and what needs to happen next.`, 'utf-8');
|
|
167
|
-
writeFileSync(join(cmdDir, 'citadel-security.md'), `You are 🛡️ BRUCE (CISO). Run a full security audit:
|
|
168
|
-
- Secrets management (no hardcoded keys)
|
|
169
|
-
- Auth flow (bcrypt/argon2, JWT with short expiry)
|
|
170
|
-
- OWASP Top 10 compliance
|
|
171
|
-
- Dependency CVE scan
|
|
172
|
-
- PII handling (encrypted at rest)
|
|
173
|
-
- CSRF/XSS/SQL injection vectors
|
|
174
|
-
You have ABSOLUTE VETO POWER. If critical issues found, BLOCK deployment.`, 'utf-8');
|
|
161
|
+
writeFileSync(join(cmdDir, 'citadel-help.md'), `You are ATLAS. Read CLAUDE.md for rules. Show current phase, progress, next steps. Guide the user.`, 'utf-8');
|
|
162
|
+
writeFileSync(join(cmdDir, 'citadel-build.md'), `Read CLAUDE.md for rules. Read ONLY the team file for the current phase (see PHASED CONTEXT LOADING table). Build following Maker→Checker flow.`, 'utf-8');
|
|
163
|
+
writeFileSync(join(cmdDir, 'citadel-review.md'), `Read the relevant checker team file. Review: code quality, tests (80%+), performance, security (OWASP), accessibility (WCAG). PASS/FAIL per category.`, 'utf-8');
|
|
164
|
+
writeFileSync(join(cmdDir, 'citadel-security.md'), `You are BRUCE (CISO). Read .citadel/teams/ciso-all.md. Full security audit. You have ABSOLUTE VETO POWER.`, 'utf-8');
|
|
165
|
+
writeFileSync(join(cmdDir, 'citadel-status.md'), `Read .citadel/memory/session.json and .citadel/gates/. Show phase, gate progress, next steps.`, 'utf-8');
|
|
175
166
|
}
|
|
176
167
|
export function installCursor(projectPath) {
|
|
177
|
-
// .cursorrules — auto-loaded by Cursor
|
|
178
168
|
writeFileSync(join(projectPath, '.cursorrules'), buildRulesContent(), 'utf-8');
|
|
179
|
-
// Commands
|
|
180
169
|
const cmdDir = join(projectPath, '.cursor', 'commands');
|
|
181
170
|
mkdirSync(cmdDir, { recursive: true });
|
|
182
|
-
writeFileSync(join(cmdDir, 'citadel-help.md'), `Read .cursorrules and .citadel/ directory. Show current phase,
|
|
183
|
-
writeFileSync(join(cmdDir, 'citadel-build.md'), `Read .cursorrules for
|
|
184
|
-
writeFileSync(join(cmdDir, 'citadel-review.md'), `
|
|
171
|
+
writeFileSync(join(cmdDir, 'citadel-help.md'), `Read .cursorrules and .citadel/ directory. Show current phase, next steps.`, 'utf-8');
|
|
172
|
+
writeFileSync(join(cmdDir, 'citadel-build.md'), `Read .cursorrules. Load ONLY the team file for the current phase. Build following Maker→Checker flow.`, 'utf-8');
|
|
173
|
+
writeFileSync(join(cmdDir, 'citadel-review.md'), `Read relevant checker team file. PASS/FAIL per category.`, 'utf-8');
|
|
185
174
|
}
|
|
186
175
|
export function installAntigravity(projectPath) {
|
|
187
|
-
// GEMINI.md — auto-loaded by Antigravity
|
|
188
176
|
writeFileSync(join(projectPath, 'GEMINI.md'), buildRulesContent(), 'utf-8');
|
|
189
|
-
// .antigravity/rules.md (backup location some setups use)
|
|
190
177
|
const agDir = join(projectPath, '.antigravity');
|
|
191
178
|
mkdirSync(agDir, { recursive: true });
|
|
192
179
|
writeFileSync(join(agDir, 'rules.md'), buildRulesContent(), 'utf-8');
|
|
193
180
|
}
|
|
194
181
|
export function installWindsurf(projectPath) {
|
|
195
|
-
// .windsurfrules — auto-loaded by Windsurf
|
|
196
182
|
writeFileSync(join(projectPath, '.windsurfrules'), buildRulesContent(), 'utf-8');
|
|
197
183
|
}
|
|
198
184
|
export function installAllIDEs(projectPath) {
|
|
@@ -201,4 +187,5 @@ export function installAllIDEs(projectPath) {
|
|
|
201
187
|
installAntigravity(projectPath);
|
|
202
188
|
installWindsurf(projectPath);
|
|
203
189
|
}
|
|
190
|
+
export { writeTeamFiles };
|
|
204
191
|
//# sourceMappingURL=ide-rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-rules.js","sourceRoot":"","sources":["../../src/cli/ide-rules.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"ide-rules.js","sourceRoot":"","sources":["../../src/cli/ide-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -50,7 +50,7 @@ After init, you can also use slash commands in your IDE:
|
|
|
50
50
|
`);
|
|
51
51
|
}
|
|
52
52
|
else if (cmd === 'version' || cmd === '--version' || cmd === '-v') {
|
|
53
|
-
console.log('citadel-ai v1.
|
|
53
|
+
console.log('citadel-ai v1.4.0');
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
console.log(`Unknown command: ${cmd}\nRun: npx citadel-ai help`);
|
package/dist/cli/init.js
CHANGED
|
@@ -5,28 +5,59 @@ import { Memory } from '../core/memory.js';
|
|
|
5
5
|
import { GateSystem } from '../core/gates.js';
|
|
6
6
|
import { getAgentCount, AGENT_REGISTRY } from '../agents/registry.js';
|
|
7
7
|
import { banner } from '../ui/terminal.js';
|
|
8
|
-
import { installAllIDEs } from './ide-rules.js';
|
|
8
|
+
import { installAllIDEs, writeTeamFiles } from './ide-rules.js';
|
|
9
9
|
function ask(q) {
|
|
10
10
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
11
11
|
return new Promise(r => { rl.question(q, a => { rl.close(); r(a.trim()); }); });
|
|
12
12
|
}
|
|
13
|
+
// ── Full agent persona files (42 individual .md files) ──
|
|
13
14
|
function writeAgentPersonas(cp) {
|
|
14
15
|
const d = join(cp, 'agents');
|
|
15
16
|
mkdirSync(d, { recursive: true });
|
|
16
17
|
for (const [id, a] of AGENT_REGISTRY) {
|
|
17
|
-
writeFileSync(join(d, `${id}.md`),
|
|
18
|
+
writeFileSync(join(d, `${id}.md`), [
|
|
19
|
+
`# ${a.icon} ${a.name} — ${a.title}`,
|
|
20
|
+
`> ${a.subtitle}`,
|
|
21
|
+
``,
|
|
22
|
+
`**Inspiration:** ${a.inspiration}`,
|
|
23
|
+
`**Philosophy:** "${a.philosophy}"`,
|
|
24
|
+
`**Level:** ${a.level} | **Team:** ${a.team}`,
|
|
25
|
+
``,
|
|
26
|
+
`## Personality`,
|
|
27
|
+
a.personality,
|
|
28
|
+
``,
|
|
29
|
+
`## Voice`,
|
|
30
|
+
a.voice,
|
|
31
|
+
``,
|
|
32
|
+
`## Rules (Immutable)`,
|
|
33
|
+
...a.rules.map(r => `- ${r}`),
|
|
34
|
+
``,
|
|
35
|
+
`## Principles`,
|
|
36
|
+
...a.principles.map(p => `- ${p}`),
|
|
37
|
+
``,
|
|
38
|
+
`## System Prompt`,
|
|
39
|
+
a.systemPrompt,
|
|
40
|
+
].join('\n') + '\n', 'utf-8');
|
|
18
41
|
}
|
|
19
42
|
}
|
|
43
|
+
// ── Spec templates ──
|
|
20
44
|
function writeSpecTemplates(cp) {
|
|
21
45
|
const d = join(cp, 'specs');
|
|
22
46
|
mkdirSync(d, { recursive: true });
|
|
23
|
-
writeFileSync(join(d, 'prd.md'),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
writeFileSync(join(d, 'prd.md'), [
|
|
48
|
+
'# Product Requirements Document', '',
|
|
49
|
+
'## Problem Statement', '<!-- What problem are we solving? -->', '',
|
|
50
|
+
'## Target Users', '',
|
|
51
|
+
'## Success Metrics', '',
|
|
52
|
+
'## User Stories', '<!-- As a [user], I want [action] so that [outcome] -->', '',
|
|
53
|
+
'## Scope', '### In Scope', '### Out of Scope',
|
|
54
|
+
].join('\n') + '\n', 'utf-8');
|
|
55
|
+
writeFileSync(join(d, 'adr.md'), '# Architecture Decision Records\n\n<!-- ADRs appended by LINUS (CTO) -->\n', 'utf-8');
|
|
56
|
+
writeFileSync(join(d, 'security.md'), '# Security Requirements\n\n## Authentication\n## Authorization\n## Data Protection\n## Compliance\n## Threat Model\n\n<!-- Reviewed by BRUCE (CISO) — ABSOLUTE VETO POWER -->\n', 'utf-8');
|
|
57
|
+
writeFileSync(join(d, 'data-model.md'), '# Data Model\n\n## Entities\n## Relationships\n## Indexes\n## Migration Plan\n\n<!-- Designed by CODD, reviewed by DATE -->\n', 'utf-8');
|
|
58
|
+
writeFileSync(join(d, 'growth.md'), '# Growth Strategy\n\n## Metrics & KPIs\n## Analytics Plan\n## SEO Strategy\n## Growth Loops\n\n<!-- Owned by SEAN (CGO) -->\n', 'utf-8');
|
|
28
59
|
}
|
|
29
|
-
// ═══ MAIN ═══
|
|
60
|
+
// ═══ MAIN INIT ═══
|
|
30
61
|
export async function initCommand(targetPath) {
|
|
31
62
|
const pp = targetPath ?? process.cwd();
|
|
32
63
|
const cp = join(pp, '.citadel');
|
|
@@ -39,28 +70,37 @@ export async function initCommand(targetPath) {
|
|
|
39
70
|
}
|
|
40
71
|
}
|
|
41
72
|
console.log('\n⏳ Installing CITADEL...\n');
|
|
42
|
-
// Scaffold
|
|
43
|
-
for (const d of [cp, join(cp, 'memory'), join(cp, 'gates'), join(cp, 'specs'), join(cp, 'agents')]) {
|
|
73
|
+
// Scaffold directories
|
|
74
|
+
for (const d of [cp, join(cp, 'memory'), join(cp, 'gates'), join(cp, 'specs'), join(cp, 'agents'), join(cp, 'teams')]) {
|
|
44
75
|
mkdirSync(d, { recursive: true });
|
|
45
76
|
}
|
|
46
|
-
// Config (
|
|
47
|
-
writeFileSync(join(cp, 'citadel.config.json'), JSON.stringify({
|
|
48
|
-
|
|
77
|
+
// Config (robust — includes LLM defaults that run.ts can override from env)
|
|
78
|
+
writeFileSync(join(cp, 'citadel.config.json'), JSON.stringify({
|
|
79
|
+
version: '1.4.0',
|
|
80
|
+
features: { autoGates: true, persistentMemory: true, chineseWalls: true },
|
|
81
|
+
}, null, 2), 'utf-8');
|
|
82
|
+
// Init memory & gates
|
|
49
83
|
new Memory(pp).initSession();
|
|
50
84
|
new GateSystem(pp).initAllGates();
|
|
51
|
-
// Agent personas
|
|
85
|
+
// Agent personas — 42 individual files (full reference)
|
|
52
86
|
writeAgentPersonas(cp);
|
|
87
|
+
// Team files — 10 files (phased loading for IDEs)
|
|
88
|
+
writeTeamFiles(cp);
|
|
89
|
+
// Spec templates
|
|
53
90
|
writeSpecTemplates(cp);
|
|
54
|
-
//
|
|
91
|
+
// IDE rules (Claude Code, Cursor, Antigravity, Windsurf)
|
|
55
92
|
installAllIDEs(pp);
|
|
56
|
-
console.log(' ✅
|
|
57
|
-
console.log(' ✅ .
|
|
58
|
-
console.log(' ✅
|
|
59
|
-
console.log(' ✅ .
|
|
60
|
-
console.log(' ✅
|
|
93
|
+
console.log(' ✅ .citadel/agents/ — 42 agent personas (full reference)');
|
|
94
|
+
console.log(' ✅ .citadel/teams/ — 10 team files (phased loading for IDE)');
|
|
95
|
+
console.log(' ✅ .citadel/specs/ — PRD, ADR, Security, Data Model, Growth');
|
|
96
|
+
console.log(' ✅ CLAUDE.md — Claude Code');
|
|
97
|
+
console.log(' ✅ .cursorrules — Cursor');
|
|
98
|
+
console.log(' ✅ GEMINI.md — Antigravity');
|
|
99
|
+
console.log(' ✅ .windsurfrules — Windsurf');
|
|
100
|
+
console.log(' ✅ Slash commands — Claude Code + Cursor');
|
|
61
101
|
// .gitignore
|
|
62
102
|
const gi = join(pp, '.gitignore');
|
|
63
|
-
const giContent = '\n# CITADEL state (
|
|
103
|
+
const giContent = '\n# CITADEL state (agents + teams + specs are committed)\n.citadel/memory/\n.citadel/gates/\n';
|
|
64
104
|
if (existsSync(gi)) {
|
|
65
105
|
if (!readFileSync(gi, 'utf-8').includes('.citadel/memory'))
|
|
66
106
|
appendFileSync(gi, giContent);
|
|
@@ -72,13 +112,17 @@ export async function initCommand(targetPath) {
|
|
|
72
112
|
console.log(`
|
|
73
113
|
✅ CITADEL installed! ${c.total} agents ready.
|
|
74
114
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
115
|
+
.citadel/
|
|
116
|
+
├── agents/ 42 full agent personas (reference)
|
|
117
|
+
├── teams/ 10 team files (loaded per phase by IDE)
|
|
118
|
+
├── specs/ PRD, ADR, Security, Data, Growth
|
|
119
|
+
├── memory/ Session state (gitignored)
|
|
120
|
+
└── gates/ Gate progress (gitignored)
|
|
80
121
|
|
|
81
|
-
|
|
122
|
+
IDE: Open your project → /citadel-help (Claude Code/Cursor)
|
|
123
|
+
or just start chatting (Antigravity/Windsurf)
|
|
124
|
+
|
|
125
|
+
CLI: npx citadel-ai run (needs ANTHROPIC_API_KEY or OPENAI_API_KEY)
|
|
82
126
|
`);
|
|
83
127
|
}
|
|
84
128
|
//# sourceMappingURL=init.js.map
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/run.js
CHANGED
|
@@ -3,26 +3,48 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { createInterface } from 'node:readline';
|
|
4
4
|
import { Orchestrator } from '../core/orchestrator.js';
|
|
5
5
|
import { banner, loadUI, divider } from '../ui/terminal.js';
|
|
6
|
+
function detectLLM() {
|
|
7
|
+
const anthropicKey = process.env.ANTHROPIC_API_KEY;
|
|
8
|
+
if (anthropicKey)
|
|
9
|
+
return { provider: 'anthropic', model: 'claude-sonnet-4-20250514', apiKey: anthropicKey };
|
|
10
|
+
const openaiKey = process.env.OPENAI_API_KEY;
|
|
11
|
+
if (openaiKey)
|
|
12
|
+
return { provider: 'openai', model: 'gpt-4o', apiKey: openaiKey };
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
6
15
|
export async function runCommand() {
|
|
7
|
-
const pp = process.cwd()
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
const pp = process.cwd();
|
|
17
|
+
const configPath = join(pp, '.citadel', 'citadel.config.json');
|
|
18
|
+
if (!existsSync(configPath)) {
|
|
19
|
+
console.log('❌ No CITADEL project found. Run: npx citadel-ai init');
|
|
10
20
|
process.exit(1);
|
|
11
21
|
}
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
console.log(
|
|
22
|
+
// Detect LLM from environment
|
|
23
|
+
const llm = detectLLM();
|
|
24
|
+
if (!llm) {
|
|
25
|
+
console.log(`❌ No API key found. Set one of these environment variables:\n`);
|
|
26
|
+
console.log(` export ANTHROPIC_API_KEY=sk-ant-...`);
|
|
27
|
+
console.log(` export OPENAI_API_KEY=sk-...\n`);
|
|
28
|
+
console.log(`💡 The interactive CLI needs an API key. For IDE-only usage,`);
|
|
29
|
+
console.log(` just open your project in Claude Code, Cursor, or Antigravity.\n`);
|
|
17
30
|
process.exit(1);
|
|
18
31
|
}
|
|
19
|
-
|
|
32
|
+
// Build config
|
|
33
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
34
|
+
const config = {
|
|
35
|
+
version: raw.version ?? '1.4.0',
|
|
36
|
+
llm: { ...llm, maxTokens: 4096, temperature: 0.7 },
|
|
37
|
+
projectPath: pp,
|
|
38
|
+
citadelPath: join(pp, '.citadel'),
|
|
39
|
+
features: raw.features ?? { webResearch: true, autoGates: true, persistentMemory: true, chineseWalls: true },
|
|
40
|
+
};
|
|
20
41
|
try {
|
|
21
42
|
await loadUI();
|
|
22
43
|
}
|
|
23
44
|
catch { }
|
|
24
45
|
console.log(banner());
|
|
25
|
-
console.log(
|
|
46
|
+
console.log(` Using: ${llm.provider} (${llm.model})\n`);
|
|
47
|
+
console.log('Type your message. "help" if stuck. "exit" to quit.\n');
|
|
26
48
|
const orc = new Orchestrator(config);
|
|
27
49
|
console.log(await orc.processMessage('hello'));
|
|
28
50
|
const rl = createInterface({ input: process.stdin, output: process.stdout, prompt: '\n💬 You: ' });
|
package/dist/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "citadel-ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Enterprise AI dev framework. 42 agents. C-suite governance. Chinese walls. Persistent memory. You talk, they build.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"author": "CITADEL Contributors",
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
21
|
-
"url": "https://github.com/
|
|
21
|
+
"url": "https://github.com/nbabderrahmane/citadel-ai.git"
|
|
22
22
|
},
|
|
23
|
-
"homepage": "https://github.com/
|
|
23
|
+
"homepage": "https://github.com/nbabderrahmane/citadel-ai#readme",
|
|
24
24
|
"bugs": {
|
|
25
|
-
"url": "https://github.com/
|
|
25
|
+
"url": "https://github.com/nbabderrahmane/citadel-ai/issues"
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"main": "./dist/index.js",
|