agent-enderun 0.1.5 → 0.1.8
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/.enderun/agents/analyst.md +1 -1
- package/.enderun/agents/frontend.md +12 -12
- package/.enderun/agents/manager.md +2 -2
- package/.enderun/config.json +1 -1
- package/CHANGELOG.md +8 -0
- package/README.md +7 -7
- package/bin/cli.js +17 -4
- package/docs/tech-stack.md +1 -1
- package/package.json +2 -2
- package/packages/framework-mcp/package.json +1 -1
- package/packages/shared-types/contract.version.json +2 -2
- package/packages/shared-types/package.json +1 -1
- package/uno.config.ts +36 -0
- package/.gemini/ENDERUN.md +0 -201
- package/.gemini/PROJECT_MEMORY.md +0 -54
- package/.gemini/STATUS.md +0 -10
- package/.gemini/agents/analyst.md +0 -193
- package/.gemini/agents/backend.md +0 -253
- package/.gemini/agents/explorer.md +0 -99
- package/.gemini/agents/frontend.md +0 -164
- package/.gemini/agents/git.md +0 -95
- package/.gemini/agents/manager.md +0 -180
- package/.gemini/agents/mobile.md +0 -63
- package/.gemini/agents/native.md +0 -62
- package/.gemini/cli-commands.json +0 -9
- package/.gemini/config.json +0 -6
- package/.gemini/docs/api/README.md +0 -12
- package/.gemini/docs/tech-stack.md +0 -9
- package/packages/framework-mcp/package-lock.json +0 -1836
|
@@ -123,7 +123,7 @@ Before approving any task completion, @analyst must verify that the agent follow
|
|
|
123
123
|
- [ ] Integration tests passed with real DB (TestContainers).
|
|
124
124
|
- [ ] Zero Mock Policy verified.
|
|
125
125
|
- [ ] **Zero UI Library Policy:** Verified via manual/code scan that @frontend used no ready-made UI libraries (shadcn, MUI, etc.).
|
|
126
|
-
- [ ] **
|
|
126
|
+
- [ ] **UnoCSS Compliance:** Confirmed that the design was built with UnoCSS tokens and type-safe structure.
|
|
127
127
|
|
|
128
128
|
**PHASE_4 (Done):**
|
|
129
129
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend
|
|
3
|
-
description: "UI/UX & Frontend Architect. Expert in React 19, Vite, Zustand, and
|
|
3
|
+
description: "UI/UX & Frontend Architect. Expert in React 19, Vite, Zustand, and UnoCSS. Fluid & Modern design specialist. Automatically applies the 'Zero UI Library' and UnoCSS discipline in every task."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Frontend Architect — v0.1.5 Master
|
|
@@ -11,8 +11,8 @@ description: "UI/UX & Frontend Architect. Expert in React 19, Vite, Zustand, and
|
|
|
11
11
|
|
|
12
12
|
## 🎯 Core Principle: Search Before Reading & Continuity
|
|
13
13
|
|
|
14
|
-
- **Context-First:** Never start coding before understanding the current state of a component. Use `search_codebase` to check similar components or find the definition of a token in `
|
|
15
|
-
- **Procedural Continuity:** Maintain absolute consistency with existing UI patterns. Before editing any component, analyze its current
|
|
14
|
+
- **Context-First:** Never start coding before understanding the current state of a component. Use `search_codebase` to check similar components or find the definition of a token in `uno.config.ts`.
|
|
15
|
+
- **Procedural Continuity:** Maintain absolute consistency with existing UI patterns. Before editing any component, analyze its current UnoCSS usage and interaction logic. Finish the task using the same standards.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -31,7 +31,7 @@ Do not wait for the user to ask for basic professional standards. You are RESPON
|
|
|
31
31
|
1. Read `{{FRAMEWORK_DIR}}/PROJECT_MEMORY.md` → `CURRENT STATUS`, `ACTIVE TASKS`, and `CRITICAL DECISIONS`.
|
|
32
32
|
2. Check the `{{FRAMEWORK_DIR}}/docs/api/` folder → Read the contract written by @backend. **NO CODING BEFORE READING THE CONTRACT.**
|
|
33
33
|
3. Check `packages/shared-types/src/` → Import the types required for the UI.
|
|
34
|
-
4. Read `
|
|
34
|
+
4. Read `uno.config.ts` → Understand the project's design tokens (colors, spacing, typography).
|
|
35
35
|
|
|
36
36
|
> ✅ **End of Session:** Update `{{FRAMEWORK_DIR}}/PROJECT_MEMORY.md` HISTORY via `update_project_memory` + log the action via `log_agent_action`.
|
|
37
37
|
|
|
@@ -41,7 +41,7 @@ Do not wait for the user to ask for basic professional standards. You are RESPON
|
|
|
41
41
|
|
|
42
42
|
AI-Enderun strictly adheres to the **Zero UI Library Policy**.
|
|
43
43
|
- **FORBIDDEN:** `shadcn/ui`, `MUI`, `Chakra UI`, `Ant Design`, `Bootstrap`, etc.
|
|
44
|
-
- **MANDATORY:** All UI components (Button, Modal, Input, Card, etc.) must be built from scratch using **
|
|
44
|
+
- **MANDATORY:** All UI components (Button, Modal, Input, Card, etc.) must be built from scratch using **UnoCSS**, unique to this project.
|
|
45
45
|
- **RATIONALE:** Maximum performance (zero-runtime), full type safety, and unique/original aesthetics.
|
|
46
46
|
|
|
47
47
|
---
|
|
@@ -54,10 +54,10 @@ AI-Enderun strictly adheres to the **Zero UI Library Policy**.
|
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
57
|
-
## Design System &
|
|
57
|
+
## Design System & UnoCSS
|
|
58
58
|
|
|
59
59
|
```typescript
|
|
60
|
-
// ✅ Correct:
|
|
60
|
+
// ✅ Correct: UnoCSS (Zero-runtime, Type-safe)
|
|
61
61
|
import { css } from '.{{FRAMEWORK_DIR}}/styled-system/css';
|
|
62
62
|
|
|
63
63
|
const Button = ({ children }) => (
|
|
@@ -75,7 +75,7 @@ const Button = ({ children }) => (
|
|
|
75
75
|
);
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
**Rule:** Ad-hoc styles are forbidden. Everything must use tokens defined in `
|
|
78
|
+
**Rule:** Ad-hoc styles are forbidden. Everything must use tokens defined in `uno.config.ts`.
|
|
79
79
|
|
|
80
80
|
---
|
|
81
81
|
|
|
@@ -115,7 +115,7 @@ Frontend never creates its own types for backend data.
|
|
|
115
115
|
|
|
116
116
|
- [ ] Is the design mobile-first?
|
|
117
117
|
- [ ] Is `clamp()` or fluid spacing used for responsiveness?
|
|
118
|
-
- [ ] Are all styles built with
|
|
118
|
+
- [ ] Are all styles built with UnoCSS? (Checked: No external UI libraries used)
|
|
119
119
|
- [ ] Are types imported from `shared-types`?
|
|
120
120
|
- [ ] Are there loading and error states?
|
|
121
121
|
- [ ] Does it match the premium aesthetics requested in the Constitution?
|
|
@@ -126,7 +126,7 @@ Frontend never creates its own types for backend data.
|
|
|
126
126
|
|
|
127
127
|
- [ ] Is the design mobile-first?
|
|
128
128
|
- [ ] Is `clamp()` or fluid spacing used for responsiveness?
|
|
129
|
-
- [ ] Are all styles built with
|
|
129
|
+
- [ ] Are all styles built with UnoCSS? (Checked: No external UI libraries used)
|
|
130
130
|
- [ ] Are types imported from `shared-types`?
|
|
131
131
|
- [ ] Are there loading and error states?
|
|
132
132
|
- [ ] Does it match the premium aesthetics requested in the Constitution?
|
|
@@ -136,14 +136,14 @@ Frontend never creates its own types for backend data.
|
|
|
136
136
|
- **Design System Coverage:** Identify missing tokens or component patterns and record them as design system improvements.
|
|
137
137
|
- **UI Contract Validation:** If an API contract changes, update the frontend contract checklist and notify @backend.
|
|
138
138
|
- **Accessibility Growth:** Add at least one A11y improvement per task, such as keyboard support, focus styling, or contrast checks.
|
|
139
|
-
- **Component Reuse:** Build UI pieces as composable
|
|
139
|
+
- **Component Reuse:** Build UI pieces as composable UnoCSS components with clear props and documentation.
|
|
140
140
|
|
|
141
141
|
## RED LINES
|
|
142
142
|
|
|
143
143
|
| Forbidden | Rationale |
|
|
144
144
|
|---|---|
|
|
145
145
|
| Using `shadcn/ui` or any UI library | Violation of Zero UI Library Policy |
|
|
146
|
-
| Using Tailwind CSS | Violation of
|
|
146
|
+
| Using Tailwind CSS | Violation of UnoCSS standard |
|
|
147
147
|
| Creating local types for API data | Contract must come from `shared-types` |
|
|
148
148
|
| `any` type | Use `unknown` or proper interfaces |
|
|
149
149
|
| Hardcoded colors/spacing | Design System tokens must be used |
|
|
@@ -133,7 +133,7 @@ graph TD
|
|
|
133
133
|
- [ ] Integration tests passed with real DB.
|
|
134
134
|
- [ ] Zero Mock Policy verified.
|
|
135
135
|
- [ ] **Zero UI Library Policy** verified (Confirmed no external UI libraries used).
|
|
136
|
-
- [ ] **
|
|
136
|
+
- [ ] **UnoCSS** configuration and type-safe token usage checked.
|
|
137
137
|
|
|
138
138
|
**PHASE_4 (Done):**
|
|
139
139
|
|
|
@@ -162,7 +162,7 @@ graph TD
|
|
|
162
162
|
| Incomplete Briefing Template | Agent might misunderstand the task |
|
|
163
163
|
| Reading files without searching | Violation of Search-Before-Reading principle |
|
|
164
164
|
| Suggesting/Using ready-made UI libraries | Violation of Zero UI Library Policy |
|
|
165
|
-
| Using Tailwind CSS | Violation of
|
|
165
|
+
| Using Tailwind CSS | Violation of UnoCSS standard |
|
|
166
166
|
|
|
167
167
|
---
|
|
168
168
|
|
package/.enderun/config.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.1.6] - 2026-05-09
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **UnoCSS Integration:** Transitioned from Panda CSS to UnoCSS for frontend styling.
|
|
9
|
+
- **Auto-Scaffolding:** The `init` command now automatically adds UnoCSS dependencies and a `uno.config.ts` configuration to new projects.
|
|
10
|
+
- **Atomic CSS support:** Enabled Attributify and Icons presets by default in the generated projects.
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## [0.1.0] - 2026-05-09
|
|
6
14
|
|
|
7
15
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Agent Enderun (v0.
|
|
1
|
+
# Agent Enderun (v0.1.8)
|
|
2
2
|
|
|
3
3
|
[English](#english) | [Türkçe](#türkçe)
|
|
4
4
|
|
|
@@ -32,7 +32,7 @@ A team of specialized agents, each with a strict SOP and a unique domain:
|
|
|
32
32
|
- `@manager`: orchestration, phase gating, trace IDs
|
|
33
33
|
- `@analyst`: QA, documentation, memory auditing
|
|
34
34
|
- `@backend`: backend architecture, contracts, security
|
|
35
|
-
- `@frontend`: UI/UX,
|
|
35
|
+
- `@frontend`: UI/UX, UnoCSS, frontend continuity
|
|
36
36
|
- `@explorer`: codebase research, dependency mapping
|
|
37
37
|
- `@mobile`: mobile strategy and performance
|
|
38
38
|
- `@native`: desktop integration and OS constraints
|
|
@@ -45,7 +45,7 @@ All AI-specific logic, agent instructions, and memory live in adapter directorie
|
|
|
45
45
|
Backend and frontend communicate through `packages/shared-types` and documented API contracts in `{{FRAMEWORK_DIR}}/docs/api/`. This prevents mismatched expectations and ensures both sides implement the same contract.
|
|
46
46
|
|
|
47
47
|
### Zero UI Library Policy
|
|
48
|
-
The frontend must use
|
|
48
|
+
The frontend must use UnoCSS and no third-party UI kits. This gives you original visuals, better performance, and zero runtime UI dependencies.
|
|
49
49
|
|
|
50
50
|
## What makes Agent Enderun different
|
|
51
51
|
|
|
@@ -73,7 +73,7 @@ The frontend must use Panda CSS and no third-party UI kits. This gives you origi
|
|
|
73
73
|
### Key folders
|
|
74
74
|
|
|
75
75
|
- `apps/backend/` — server implementation and business logic.
|
|
76
|
-
- `apps/web/` — frontend interface and
|
|
76
|
+
- `apps/web/` — frontend interface and UnoCSS UI.
|
|
77
77
|
- `packages/shared-types/` — shared contract types for all agents.
|
|
78
78
|
- `packages/framework-mcp/` — MCP server tools for AI-assisted workflows.
|
|
79
79
|
- `.enderun/` — framework rules, memory, agent SOPs, and hidden configuration.
|
|
@@ -176,7 +176,7 @@ Her biri kendi uzmanlık alanı ve SOP'u olan bir ajan takımı:
|
|
|
176
176
|
- `@manager`: orkestrasyon, faz kapıları, trace ID yönetimi
|
|
177
177
|
- `@analyst`: kalite, dokümantasyon, hafıza denetimi
|
|
178
178
|
- `@backend`: backend mimarisi, sözleşmeler, güvenlik
|
|
179
|
-
- `@frontend`: UI/UX,
|
|
179
|
+
- `@frontend`: UI/UX, UnoCSS, frontend sürekliliği
|
|
180
180
|
- `@explorer`: kod tabanı araştırması, bağımlılık haritalama
|
|
181
181
|
- `@mobile`: mobil strateji ve performans
|
|
182
182
|
- `@native`: masaüstü entegrasyonu ve işletim sistemi kısıtları
|
|
@@ -189,7 +189,7 @@ Tüm AI spesifik yapı `.gemini/`, `.claude/`, `.cursor/` veya `.codex/` gibi gi
|
|
|
189
189
|
Backend ve frontend, `packages/shared-types` ve `{{FRAMEWORK_DIR}}/docs/api/` belgeleri üzerinden eşleşir. Bu, taraflar arasında yanlış anlaşılma ihtimalini azaltır.
|
|
190
190
|
|
|
191
191
|
### Sıfır UI Kütüphanesi Politikası
|
|
192
|
-
Frontend,
|
|
192
|
+
Frontend, UnoCSS kullanmalı ve üçüncü taraf UI kitleri yasaklanmalıdır. Böylece performans, özgünlük ve sıfır runtime bağımlılığı sağlanır.
|
|
193
193
|
|
|
194
194
|
## Agent Enderun’u Öne Çıkaranlar
|
|
195
195
|
|
|
@@ -217,7 +217,7 @@ Frontend, Panda CSS kullanmalı ve üçüncü taraf UI kitleri yasaklanmalıdır
|
|
|
217
217
|
### Ana klasörler
|
|
218
218
|
|
|
219
219
|
- `apps/backend/` — sunucu uygulaması ve iş mantığı.
|
|
220
|
-
- `apps/web/` — frontend UI ve
|
|
220
|
+
- `apps/web/` — frontend UI ve UnoCSS bileşenleri.
|
|
221
221
|
- `packages/shared-types/` — ortak sözleşme tipleri.
|
|
222
222
|
- `packages/framework-mcp/` — AI destekli MCP sunucu araçları.
|
|
223
223
|
- `.enderun/` — çerçeve kuralları, hafıza, ajan SOP'ları ve gizli yapılandırma.
|
package/bin/cli.js
CHANGED
|
@@ -151,7 +151,12 @@ function mergePackageJson(targetPath, sourcePath) {
|
|
|
151
151
|
...(sourceDevDeps["ts-morph"] ? {"ts-morph": sourceDevDeps["ts-morph"]} : {}),
|
|
152
152
|
...(sourceDevDeps["typescript"] ? {"typescript": sourceDevDeps["typescript"]} : {}),
|
|
153
153
|
...(sourceDevDeps["@types/node"] ? {"@types/node": sourceDevDeps["@types/node"]} : {}),
|
|
154
|
-
...(sourceDevDeps["tsx"] ? {"tsx": sourceDevDeps["tsx"]} : {})
|
|
154
|
+
...(sourceDevDeps["tsx"] ? {"tsx": sourceDevDeps["tsx"]} : {}),
|
|
155
|
+
"unocss": "^66.0.0",
|
|
156
|
+
"@unocss/preset-uno": "^66.0.0",
|
|
157
|
+
"@unocss/preset-attributify": "^66.0.0",
|
|
158
|
+
"@unocss/preset-icons": "^66.0.0",
|
|
159
|
+
"@unocss/transformer-directives": "^66.0.0"
|
|
155
160
|
});
|
|
156
161
|
|
|
157
162
|
if (targetPkg.peerDependencies) targetPkg.peerDependencies = sanitizeDeps(targetPkg.peerDependencies);
|
|
@@ -235,7 +240,7 @@ This file is the Single Source of Truth (SSOT) and the persistent memory of the
|
|
|
235
240
|
| :--- | :--- |
|
|
236
241
|
| Project Name | ${path.basename(process.cwd())} |
|
|
237
242
|
| Platform | Not defined |
|
|
238
|
-
| Frontend | React 19 + Vite +
|
|
243
|
+
| Frontend | React 19 + Vite + UnoCSS |
|
|
239
244
|
| Backend | Node.js 20+ + Fastify |
|
|
240
245
|
| DB | PostgreSQL |
|
|
241
246
|
|
|
@@ -324,6 +329,7 @@ async function initCommand(selectedAdapter) {
|
|
|
324
329
|
".enderun/STATUS.md",
|
|
325
330
|
"packages/framework-mcp",
|
|
326
331
|
"packages/shared-types",
|
|
332
|
+
"uno.config.ts",
|
|
327
333
|
];
|
|
328
334
|
|
|
329
335
|
const DIRS_TO_CREATE = [
|
|
@@ -466,8 +472,8 @@ async function initCommand(selectedAdapter) {
|
|
|
466
472
|
const finalMemoryPath = path.join(targetDir, targetBase, "PROJECT_MEMORY.md");
|
|
467
473
|
initializeMemory(finalMemoryPath, targetBase);
|
|
468
474
|
|
|
469
|
-
// Deep clean ALL package.json files in target
|
|
470
|
-
deepCleanProtocols(
|
|
475
|
+
// Deep clean ALL package.json files in target directory (removes workspace: and panda css)
|
|
476
|
+
deepCleanProtocols(targetDir, targetScope);
|
|
471
477
|
|
|
472
478
|
// Initialize git if missing
|
|
473
479
|
if (!fs.existsSync(path.join(targetDir, ".git"))) {
|
|
@@ -551,6 +557,7 @@ function deepCleanProtocols(dir, targetScope = "") {
|
|
|
551
557
|
for (const entry of entries) {
|
|
552
558
|
const fullPath = path.join(dir, entry.name);
|
|
553
559
|
if (entry.isDirectory()) {
|
|
560
|
+
if (entry.name === "node_modules" || entry.name === ".git") continue;
|
|
554
561
|
deepCleanProtocols(fullPath, targetScope);
|
|
555
562
|
} else if (entry.name === "package.json") {
|
|
556
563
|
try {
|
|
@@ -645,6 +652,12 @@ function sanitizeJson(obj, targetScope = "") {
|
|
|
645
652
|
let finalKey = key;
|
|
646
653
|
let finalValue = value;
|
|
647
654
|
|
|
655
|
+
// Remove UnoCSS related keys or values
|
|
656
|
+
if (typeof key === "string" && (key.includes("panda") || key.includes("pandacss"))) continue;
|
|
657
|
+
if (typeof value === "string" && (value.includes("panda codegen") || value.includes("panda init"))) {
|
|
658
|
+
continue; // Skip this script/field
|
|
659
|
+
}
|
|
660
|
+
|
|
648
661
|
// Replace scope if needed
|
|
649
662
|
if (targetScope) {
|
|
650
663
|
if (typeof key === "string" && key.startsWith("@ai-enderun/")) {
|
package/docs/tech-stack.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-enderun",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
"packages/*"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dependencies": {},
|
|
18
18
|
"devDependencies": {},
|
|
19
19
|
"enderun": {
|
|
20
|
-
"version": "0.1.
|
|
20
|
+
"version": "0.1.8",
|
|
21
21
|
"initializedAt": "2026-05-09T13:24:27.472Z"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.8",
|
|
3
3
|
"last_updated": "2026-05-09T13:04:00Z",
|
|
4
4
|
"contract_hash": "daf1d688875061ef66697f39ac2449a34631e9b93926ed3e694b4e4ac7423d98",
|
|
5
5
|
"breaking_changes": [
|
|
6
|
-
{ "version": "0.1.
|
|
6
|
+
{ "version": "0.1.8", "description": "Initial framework setup" }
|
|
7
7
|
],
|
|
8
8
|
"deprecated_versions": []
|
|
9
9
|
}
|
package/uno.config.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineConfig,
|
|
3
|
+
presetAttributify,
|
|
4
|
+
presetIcons,
|
|
5
|
+
presetTypography,
|
|
6
|
+
presetUno,
|
|
7
|
+
presetWebFonts,
|
|
8
|
+
transformerDirectives,
|
|
9
|
+
transformerVariantGroup,
|
|
10
|
+
} from 'unocss'
|
|
11
|
+
|
|
12
|
+
export default defineConfig({
|
|
13
|
+
shortcuts: [
|
|
14
|
+
['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
|
|
15
|
+
['icon-btn', 'text-[0.9em] inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600 !outline-none'],
|
|
16
|
+
],
|
|
17
|
+
presets: [
|
|
18
|
+
presetUno(),
|
|
19
|
+
presetAttributify(),
|
|
20
|
+
presetIcons({
|
|
21
|
+
scale: 1.2,
|
|
22
|
+
warn: true,
|
|
23
|
+
}),
|
|
24
|
+
presetTypography(),
|
|
25
|
+
presetWebFonts({
|
|
26
|
+
fonts: {
|
|
27
|
+
sans: 'Inter',
|
|
28
|
+
mono: 'Fira Code',
|
|
29
|
+
},
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
transformers: [
|
|
33
|
+
transformerDirectives(),
|
|
34
|
+
transformerVariantGroup(),
|
|
35
|
+
],
|
|
36
|
+
})
|
package/.gemini/ENDERUN.md
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
# Agent Enderun (v0.0.4)
|
|
2
|
-
# Place in project root. This file is the single source of truth for Base Project AI Extensions.
|
|
3
|
-
|
|
4
|
-
## 🎖️ AGENT CHECKLIST (MANDATORY BEFORE RESPONSE)
|
|
5
|
-
> Check this list at the end of every response:
|
|
6
|
-
> - [ ] **Zero Mock:** Did you use fake data or placeholders? (Strictly Forbidden)
|
|
7
|
-
> - [ ] **Contract First:** Are `shared-types` and `contract.version.json` up to date?
|
|
8
|
-
> - [ ] **Audit Log:** Did you log this action in `.gemini/logs/[agent].json`?
|
|
9
|
-
> - [ ] **CLI Orchestration:** Does the action comply with `gemini cli` rules?
|
|
10
|
-
> - [ ] **No "..." allowed:** Did you write the code completely without omitting parts?
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Constitution Status
|
|
15
|
-
This file (`./gemini.md`) and the `.gemini/docs/` folder represent the "Supreme Law" of the project. All agents must read this file first in every session and strictly comply with its rules 100%.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## STEP 0 — STARTUP (EVERY SESSION, NON-NEGOTIABLE)
|
|
20
|
-
|
|
21
|
-
1. **Read ./gemini.md First:** Read and fully understand this file before taking any action.
|
|
22
|
-
2. **Check `.gemini/docs/` Folder:** Verify the existence of the `.gemini/docs/` folder in the project root.
|
|
23
|
-
3. **Absorb Context:** Read `.gemini/docs/tech-stack.md`. If it is empty, ask the user to fill it before proceeding.
|
|
24
|
-
4. **Demand Context:** If the `.gemini/docs/` folder does not exist, ask the user for project context and target audience information before writing any code.
|
|
25
|
-
5. Default Frontend: React 19 + Vite (SPA) + react-router-dom (User Preference)
|
|
26
|
-
|
|
27
|
-
**NEVER SKIP THIS STEP.** Do not assume context; read first, then act.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## CORE PRINCIPLES
|
|
32
|
-
|
|
33
|
-
- **Team-Lead Default Orchestration:** Whenever the user writes a general request, the `@team-lead` agent MUST automatically step in. The Team Lead is responsible for analyzing the user's intent, determining the Execution Profile (Lightweight or Full), and delegating tasks to the appropriate specialist agents.
|
|
34
|
-
- **Contract-First Approach:** Communication between Backend and Frontend must always be defined via schemas first. The `packages/shared-types/contract.version.json` file must be kept in MAJOR.MINOR format and updated with every change. The `@backend-architect` is responsible for updating this file.
|
|
35
|
-
- **Zero Mock Policy:** The use of fake (mock) data or placeholders is strictly forbidden. Every line of code must connect to a real endpoint or a typed contract. (Exception: Controlled mock usage is allowed for external 3rd party services like Stripe, Twilio).
|
|
36
|
-
- **Branded Types Law:** All IDs (UserID, ProjectID, etc.) must be in the "Branded Types" format defined under `packages/shared-types`. Using plain strings or numbers is forbidden.
|
|
37
|
-
- **CLI-First Policy:** Due to the AI CLI Assistant focus, all outputs must be user-friendly (using Chalk, Clack, etc.) and stream-based. All commands must support the `--output json` flag and produce machine-readable output.
|
|
38
|
-
- **Audit Logging Necessity:** Every critical action must be logged traceably under the `.gemini/logs/` folder.
|
|
39
|
-
- **File Ownership Rule:** Each file is the responsibility of a single agent.
|
|
40
|
-
- **CLI Command Mapping:** All CLI commands in the project must be defined in the `.gemini/cli-commands.json` file and assigned to the relevant agent.
|
|
41
|
-
- **Exit Code Standard:** Standard exit codes (e.g., 64: User Error, 70: Internal Error) must be used in error situations.
|
|
42
|
-
- **Phase-Based Execution:** The development process must progress through defined Phases. You cannot move to the next phase until the current one is completed.
|
|
43
|
-
- **CLI-Driven Orchestration:** All agent interactions and task delegations must be traceable via `gemini cli`.
|
|
44
|
-
- **Monorepo Discipline:** Commands must always be run from the monorepo root directory using npm workspaces (e.g., `npm run dev --workspace=web`).
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## STEP 1 — VALIDATE BEFORE ACTING
|
|
49
|
-
|
|
50
|
-
Before writing any code or design, check `.gemini/docs/tech-stack.md`:
|
|
51
|
-
|
|
52
|
-
| Unknown | Action |
|
|
53
|
-
|---|---|
|
|
54
|
-
| Target Audience | Ask — do not proceed |
|
|
55
|
-
| Platform (web / mobile / desktop / backend) | Ask — do not proceed |
|
|
56
|
-
| **Technology Stack** | **Check `.gemini/docs/tech-stack.md` → If missing → ASK** |
|
|
57
|
-
| **Execution Profile (Full / Lightweight)** | **Ask — do not proceed** |
|
|
58
|
-
| Database (MariaDB / SQLite / PostgreSQL) | Ask — do not proceed |
|
|
59
|
-
| Environment (prototype / production) | Ask — do not proceed |
|
|
60
|
-
| Auth required? | Ask — do not proceed |
|
|
61
|
-
| Monorepo or separate repos? | Ask — do not proceed |
|
|
62
|
-
| Deploy target (Vercel / Docker / Bare metal)? | Ask — do not proceed |
|
|
63
|
-
| i18n (multi-language) required? | Ask — do not proceed |
|
|
64
|
-
| API versioning strategy? | Ask — do not proceed |
|
|
65
|
-
| Accessibility level (WCAG AA / AAA)? | Default AA — ask if different |
|
|
66
|
-
| Scope too broad ("build the whole app") | Break into parts → confirm each part |
|
|
67
|
-
|
|
68
|
-
Small details (port, filename, folder name) → assume and state them.
|
|
69
|
-
|
|
70
|
-
Always write assumptions at the top of your response:
|
|
71
|
-
```
|
|
72
|
-
Assumption: [what] — [why]
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## OUTPUT FLOWS (MANDATORY STANDARDS)
|
|
78
|
-
|
|
79
|
-
Every agent must use the **Mandatory Output Flow** defined in their specific `.md` file. However, the following sections are mandatory in all outputs:
|
|
80
|
-
|
|
81
|
-
- **Assumptions:** All assumptions made.
|
|
82
|
-
- **Problem:** What is being built and why (Max 2-3 sentences).
|
|
83
|
-
- **File Tree:** Complete folder and file structure.
|
|
84
|
-
- **Code:** Complete code content (using "..." is forbidden).
|
|
85
|
-
- **Audit Logging:** How the changes are logged.
|
|
86
|
-
- **Tests:** Test file for every service and utility.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## ABSOLUTE DON'TS — APPLIES TO EVERY RESPONSE
|
|
91
|
-
|
|
92
|
-
- **`any` Type is Forbidden:** The use of `any` is strictly forbidden in TypeScript projects.
|
|
93
|
-
- **`console.log` is Forbidden:** `console.log` cannot be present in production code.
|
|
94
|
-
- **Mock Data is Forbidden:** Sahte (mock) veri veya yer tutucu kullanımı kesinlikle yasaktır. Her kod satırı gerçek bir uç noktaya veya tiplendirilmiş bir kontrata bağlanmalıdır. (İstisna: Stripe, Twilio gibi harici 3. taraf servisler için kontrollü mock kullanımına izin verilir).
|
|
95
|
-
- **File Ownership Violation:** Making unauthorized changes in files outside your scope is forbidden.
|
|
96
|
-
- **Security Rule Violation:** Violating security protocols is strictly forbidden.
|
|
97
|
-
- **Hardcoded Secrets:** Embedding API keys or env variables inside the code is forbidden.
|
|
98
|
-
- **Raw SQL Strings:** Direct strings cannot be used for SQL queries; strictly use `Kysely`.
|
|
99
|
-
- **Direct DB call in a controller:** Database operations cannot be performed directly inside a Controller.
|
|
100
|
-
- **Missing try/catch on async operations:** Error handling (try/catch) is mandatory for asynchronous operations.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## LANGUAGE POLICY
|
|
105
|
-
|
|
106
|
-
- Code comments: English (Explain why it was done, not what it does).
|
|
107
|
-
- Variable / function / class / file names: English.
|
|
108
|
-
- User-facing UI text: English (Default).
|
|
109
|
-
- Communication: English by default (Global rule).
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## EXECUTION PROFILES
|
|
114
|
-
|
|
115
|
-
Depending on the size and complexity of the project, there are two execution profiles. The Team Lead must determine this profile at the start of the project:
|
|
116
|
-
|
|
117
|
-
- **Lightweight Profile (MVP):** Only `team-lead`, `backend-architect`, `frontend-specialist`, and `design-specialist` are active. Mandatory for rapid prototyping, small projects, and low-budget work. Mobile, desktop, and test agents are bypassed.
|
|
118
|
-
- **Full Profile (Enterprise):** team-lead, backend-architect, frontend-specialist, design-specialist, test-engineer
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## API & CONTRACT MANAGEMENT
|
|
123
|
-
|
|
124
|
-
### 1. contract.version.json Standard
|
|
125
|
-
This file is the single source of truth for API stability. `@backend-architect` is responsible for its integrity.
|
|
126
|
-
|
|
127
|
-
```json
|
|
128
|
-
{
|
|
129
|
-
"version": "MAJOR.MINOR",
|
|
130
|
-
"last_updated": "ISO-8601",
|
|
131
|
-
"contract_hash": "sha256-hash-of-shared-types",
|
|
132
|
-
"breaking_changes": [
|
|
133
|
-
{ "version": "1.0", "description": "Initial stable release" }
|
|
134
|
-
],
|
|
135
|
-
"deprecated_versions": []
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
- **MAJOR:** Incremented on breaking changes (Phase Rollback required).
|
|
139
|
-
- **MINOR:** Incremented on additive changes (New fields/endpoints).
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## STATE MACHINE & EXECUTION PHASES
|
|
144
|
-
|
|
145
|
-
The development process follows a strict State Machine. Transition to the next phase is prohibited until the "Success Criteria" of the current phase is met.
|
|
146
|
-
|
|
147
|
-
- **[STATE: PHASE_0] Discovery & Setup:** Profile selection (Lightweight/Full), requirement analysis, and validating `.gemini/docs/tech-stack.md`.
|
|
148
|
-
- **[STATE: PHASE_1] Architecture & Contracts:** Setup of data models, API schemas, and `packages/shared-types`. Cannot proceed until Frontend and Backend approve these schemas.
|
|
149
|
-
- **[STATE: PHASE_2] Core Development:** Active agents build core features in parallel based on the selected profile. (Under the apps/ folder)
|
|
150
|
-
- **[STATE: PHASE_3] Integration & Testing:** System integration.
|
|
151
|
-
- **[STATE: PHASE_4] Optimization & Deployment:** Performance audit and deployment.
|
|
152
|
-
|
|
153
|
-
**Rollback Rule:** If a missing field or error is detected in the API schema (`shared-types`) during Phase 2 or later, the system immediately transitions to `[STATE: ROLLBACK_PHASE_1]`. All relevant agents stop their processes, switch to `WAITING` state, and cannot return to Phase 2 until the `backend-architect` resolves the issues.
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## AGENT TIMEOUT & ESCALATION
|
|
158
|
-
|
|
159
|
-
Every agent must produce a response for their assigned task within a maximum of 30 minutes (or the time defined per project). Upon timeout, `task-specialist` automatically moves the relevant task to `BLOCKED` status and leaves an escalation message for the `@team-lead`.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## CLI STANDARDS & CONFIGURATION
|
|
164
|
-
|
|
165
|
-
### 1. CLI Command Map (`.gemini/cli-commands.json`)
|
|
166
|
-
All CLI commands are centrally managed in this file. Each command must have a designated owner agent.
|
|
167
|
-
|
|
168
|
-
### 2. Configuration (`.gemini/config.json`)
|
|
169
|
-
CLI behaviors (logLevel, outputFormat, defaultProfile) are managed through this file.
|
|
170
|
-
|
|
171
|
-
**Priority Rule:** CLI Flags > `.gemini/config.json` > `.env` > Default Values.
|
|
172
|
-
|
|
173
|
-
### 3. Exit Codes
|
|
174
|
-
- `0`: Success
|
|
175
|
-
- `64`: User Error (Invalid argument, missing parameter)
|
|
176
|
-
- `70`: Internal Error (Software error, crash)
|
|
177
|
-
- `71`: Connection/Network Error
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## API VERSIONING STRATEGY
|
|
182
|
-
|
|
183
|
-
All APIs are versioned via the URL path (`/api/v1/...`). The `packages/shared-types/contract.version.json` file uses the MAJOR.MINOR format, and must be updated with every change. The `@backend-architect` is responsible for its accuracy. The MAJOR version is incremented for every breaking change. Old versions continue to be supported for at least 1 MAJOR release.
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## PARALLEL EXECUTION & COORDINATION RULES
|
|
188
|
-
|
|
189
|
-
1. **Shared-Types as Source of Truth:** All agents reference `packages/shared-types` and the `contract.version.json` file.
|
|
190
|
-
2. **Commit-Level Logging:** Every agent must log every atomic change to the `.gemini/logs/[agent-name].json` file.
|
|
191
|
-
3. **Implicit Dependency Lock:** If an agent's required output is not ready, it switches to `WAITING` state.
|
|
192
|
-
4. **Ownership Enforcement:** Changes to files outside an agent's scope cannot be made without `@team-lead` approval.
|
|
193
|
-
5. **No Blind Coding:** Agents must periodically read `.gemini/logs/` and `.gemini/STATUS.md`.
|
|
194
|
-
6. **Agent Directives (Message Queue):** `.gemini/messages/` is used for inter-agent communication.
|
|
195
|
-
- **Message Queue Lock Protocol:** Before writing to a file, check for `.gemini/messages/.lock`.
|
|
196
|
-
- If it exists, wait 500ms and retry (max 3 retries).
|
|
197
|
-
- If lock persists after 3 retries, the agent MUST assume a **stale lock**, delete it, and notify `@team-lead` in their log.
|
|
198
|
-
- Delete `.lock` and the message file immediately after processing.
|
|
199
|
-
7. **Phase Rollback Protocol:** If contracts are insufficient, return to Phase 1. All agents become `WAITING` and write `CONTRACT_CHANGED` to their log.
|
|
200
|
-
8. **Next.js Ownership Rule:** `apps/web/api/` and `server/actions/` -> @backend-architect. `apps/web/(routes)/` and `components/` -> @frontend-specialist.
|
|
201
|
-
9. **Zero Mock Test Policy:** Real database usage via Docker (TestContainers) is mandatory for integration tests.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# PROJECT MEMORY — Agent Enderun
|
|
2
|
-
|
|
3
|
-
This file is the Single Source of Truth (SSOT) and the persistent memory of the project.
|
|
4
|
-
|
|
5
|
-
## CURRENT STATUS
|
|
6
|
-
|
|
7
|
-
| Active Phase | Profile | Last Update | Active Trace ID | Blockers |
|
|
8
|
-
| :----------- | :------ | :---------- | :-------------- | :------- |
|
|
9
|
-
| PHASE_0 | Lightweight | 2026-05-09 | 01KR6EJA6GG3RPS849097KS37Q | NONE |
|
|
10
|
-
|
|
11
|
-
## PROJECT DEFINITION
|
|
12
|
-
|
|
13
|
-
| Field | Value |
|
|
14
|
-
| :--- | :--- |
|
|
15
|
-
| Project Name | agent-enderun |
|
|
16
|
-
| Platform | Not defined |
|
|
17
|
-
| Frontend | React 19 + Vite + Panda CSS |
|
|
18
|
-
| Backend | Node.js 20+ + Fastify |
|
|
19
|
-
| DB | PostgreSQL |
|
|
20
|
-
|
|
21
|
-
## DOD STATUS
|
|
22
|
-
|
|
23
|
-
| Phase | Status | Note |
|
|
24
|
-
| :--- | :--- | :--- |
|
|
25
|
-
| PHASE_0 | IN_PROGRESS | Initializing project structure |
|
|
26
|
-
| PHASE_1 | PENDING | |
|
|
27
|
-
| PHASE_2 | PENDING | |
|
|
28
|
-
| PHASE_3 | PENDING | |
|
|
29
|
-
| PHASE_4 | PENDING | |
|
|
30
|
-
|
|
31
|
-
## CRITICAL DECISIONS
|
|
32
|
-
|
|
33
|
-
| Date | Decision | Rationale | Agent |
|
|
34
|
-
| :--- | :--- | :--- | :--- |
|
|
35
|
-
| 2026-05-09 | Project Initialized | Framework setup via CLI | @manager |
|
|
36
|
-
|
|
37
|
-
## DELIVERABLES
|
|
38
|
-
|
|
39
|
-
| Module | Status | Agent | Date |
|
|
40
|
-
| :--- | :--- | :--- | :--- |
|
|
41
|
-
|
|
42
|
-
## ACTIVE TASKS
|
|
43
|
-
|
|
44
|
-
| Trace ID | Task | Agent | Priority | Status |
|
|
45
|
-
| :--- | :--- | :--- | :--- | :--- |
|
|
46
|
-
| 01KR6EJA6GG3RPS849097KS37Q | Framework setup and architecture alignment | @manager | P1 | IN_PROGRESS |
|
|
47
|
-
|
|
48
|
-
## HISTORY (Persistent Memory)
|
|
49
|
-
|
|
50
|
-
### 2026-05-09 — Framework Initialization
|
|
51
|
-
|
|
52
|
-
- **Agent:** @manager
|
|
53
|
-
- **Trace ID:** 01KR6EJA6GG3RPS849097KS37Q
|
|
54
|
-
- **Action:** Initialized Agent Enderun framework and project structure.
|
package/.gemini/STATUS.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# AGENT STATUS
|
|
2
|
-
|
|
3
|
-
| Agent | Status | Active Task | Last Update |
|
|
4
|
-
| :--- | :--- | :--- | :--- |
|
|
5
|
-
| @manager | IDLE | Framework setup | 2026-05-09 |
|
|
6
|
-
| @analyst | IDLE | - | - |
|
|
7
|
-
| @backend | IDLE | - | - |
|
|
8
|
-
| @frontend | IDLE | - | - |
|
|
9
|
-
| @explorer | IDLE | - | - |
|
|
10
|
-
| @git | IDLE | - | - |
|