- Add .architect/ directory structure (10 template files) as project brain for agent orientation - Add architect-indexer agent that scans codebase and generates structured architecture docs - Add Docker containerization: Dockerfile.architect-indexer, docker-compose.architect.yml - Add TypeScript project-mapper module with staleness detection and context injection - Add /index-project command, architect-first-contact rule, project-mapping skill - Integrate orchestrator first-contact check: triggers indexing before any task delegation - Add npm arch:* scripts for Docker-based indexing workflow - Register agent in capability-index.yaml and AGENTS.md
309 lines
12 KiB
Markdown
309 lines
12 KiB
Markdown
# Project Structure
|
|
|
|
This document describes the organized structure of the APAW project.
|
|
|
|
## Root Directory
|
|
|
|
```
|
|
APAW/
|
|
├── .architect/ # Project codebase map (auto-indexed)
|
|
│ ├── README.md # Navigation index
|
|
│ ├── project.json # Machine-readable project metadata
|
|
│ ├── state.json # Index freshness state (hashes, timestamps)
|
|
│ ├── architecture/ # Architecture overview and dependency graph
|
|
│ ├── entities/ # Domain entities, fields, relationships
|
|
│ ├── db-schema/ # Database tables, columns, indexes
|
|
│ ├── api-surface/ # API endpoints, methods, auth
|
|
│ ├── conventions/ # Naming, patterns, forbidden practices
|
|
│ ├── maps/ # Programmatic file/module graphs (.gitignored)
|
|
│ └── tech-stack/ # Languages, frameworks, databases, tools
|
|
├── .kilo/ # Kilo Code configuration
|
|
│ ├── agents/ # 30 agent definitions (YAML frontmatter)
|
|
│ │ ├── orchestrator.md # Main dispatcher
|
|
│ │ ├── php-developer.md # PHP/Laravel/Symfony/WordPress
|
|
│ │ ├── python-developer.md # Python/Django/FastAPI
|
|
│ │ ├── lead-developer.md # Primary code writer
|
|
│ │ ├── code-skeptic.md # Adversarial review
|
|
│ │ └── ... (25 more)
|
|
│ ├── commands/ # Slash commands
|
|
│ │ ├── pipeline.md # Full agent pipeline
|
|
│ │ ├── laravel.md # Laravel web app pipeline
|
|
│ │ ├── nextjs.md # Next.js app pipeline
|
|
│ │ ├── vue.md # Vue/Nuxt app pipeline
|
|
│ │ ├── wordpress.md # WordPress development pipeline
|
|
│ │ ├── feature.md # Feature development
|
|
│ │ ├── commerce.md # E-commerce site
|
|
│ │ └── ... (15 more)
|
|
│ ├── rules/ # Global rules (loaded for all agents)
|
|
│ │ ├── global.md # Base rules
|
|
│ │ ├── atomic-tasks.md # 1 action = 1 task principle
|
|
│ │ ├── modular-code.md # Modules, libraries, microservices
|
|
│ │ ├── token-optimization.md # Token budget rules
|
|
│ │ ├── gitea-centric-workflow.md # Gitea as center of work
|
|
│ │ └── ... (10 more)
|
|
│ ├── skills/ # Agent skills
|
|
│ │ ├── php-laravel-patterns/ # Laravel patterns
|
|
│ │ ├── php-symfony-patterns/ # Symfony patterns
|
|
│ │ ├── php-wordpress-patterns/ # WordPress patterns
|
|
│ │ ├── php-security/ # OWASP, CSRF, XSS
|
|
│ │ ├── php-testing/ # PHPUnit, Pest
|
|
│ │ ├── php-modular-architecture/ # Module separation
|
|
│ │ ├── agent-logging/ # Execution logging
|
|
│ │ ├── gitea-workflow/ # Gitea integration (auto-detect project)
|
|
│ │ ├── gitea-commenting/ # Comment format (auto-detect project)
|
|
│ │ └── ... (30+ more)
|
|
│ ├── shared/ # Shared modules
|
|
│ │ ├── gitea-api.md # Centralized API client (auto-detect repo)
|
|
│ │ ├── gitea-auth.md # Centralized auth (env vars, no hardcoded creds)
|
|
│ │ ├── gitea-commenting.md # Comment format
|
|
│ │ └── self-evolution.md # Evolution protocol
|
|
│ ├── logs/ # Execution logs
|
|
│ │ ├── agent-executions.jsonl # Every agent invocation
|
|
│ │ ├── fitness-history.jsonl # Fitness scores
|
|
│ │ └── efficiency_score.json # Efficiency history
|
|
│ ├── capability-index.yaml # Agent capabilities & routing
|
|
│ ├── gitea.jsonc # Gitea auth structure (env var mapping, NO secrets)
|
|
│ ├── kilo.jsonc # Primary agent config
|
|
│ ├── KILO_SPEC.md # Specification
|
|
│ └── EVOLUTION_LOG.md # Evolution timeline
|
|
├── agent-evolution/ # Evolution Dashboard
|
|
│ ├── index.standalone.html # Standalone dashboard
|
|
│ ├── scripts/ # Sync & build scripts
|
|
│ ├── data/ # Agent version history
|
|
│ └── docker-compose.yml # Docker launch
|
|
├── scripts/ # Utility scripts
|
|
│ └── agent-stats.ts # Agent execution statistics
|
|
├── docker/ # Docker configurations
|
|
│ ├── Dockerfile.playwright # Playwright MCP container
|
|
│ ├── Dockerfile.architect-indexer # Project indexer container
|
|
│ ├── docker-compose.yml # Base config
|
|
│ ├── docker-compose.architect.yml # Architect indexer service
|
|
│ └── docker-compose.web-testing.yml
|
|
├── AGENTS.md # Agent reference (main config)
|
|
├── STRUCTURE.md # This document
|
|
└── README.md # Project overview
|
|
```
|
|
|
|
## Key Configuration Files
|
|
|
|
### capability-index.yaml
|
|
|
|
Maps agent capabilities for orchestrator routing:
|
|
|
|
### `.architect/` Directory (Project Brain)
|
|
|
|
Auto-indexed codebase map that all agents read before starting work:
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `.architect/README.md` | Navigation index (auto-updated) |
|
|
| `.architect/project.json` | Machine-readable project metadata |
|
|
| `.architect/state.json` | Index freshness (hashes, timestamps) |
|
|
| `.architect/architecture/overview.md` | Architecture pattern, layers |
|
|
| `.architect/architecture/dependency-graph.md` | Module dependency graph |
|
|
| `.architect/entities/entities.md` | Domain entities, relations |
|
|
| `.architect/db-schema/schema.md` | Tables, columns, indexes, FKs |
|
|
| `.architect/api-surface/endpoints.md` | API routes, methods, auth |
|
|
| `.architect/conventions/conventions.md` | Coding standards, patterns |
|
|
| `.architect/tech-stack/stack.md` | Languages, frameworks, versions |
|
|
| `.architect/maps/file-graph.json` | File imports/exports graph |
|
|
| `.architect/maps/module-graph.json` | Module dependencies graph |
|
|
|
|
See `.kilo/skills/project-mapping/SKILL.md` for full documentation.
|
|
|
|
### capability-index.yaml
|
|
|
|
Maps agent capabilities for orchestrator routing:
|
|
|
|
```yaml
|
|
agents:
|
|
php-developer:
|
|
capabilities:
|
|
- php_web_development
|
|
- laravel_development
|
|
- symfony_development
|
|
- wordpress_development
|
|
model: ollama-cloud/qwen3-coder:480b
|
|
mode: subagent
|
|
delegates_to:
|
|
- code-skeptic
|
|
- security-auditor
|
|
|
|
capability_routing:
|
|
php_web_development: php-developer
|
|
laravel_development: php-developer
|
|
```
|
|
|
|
### kilo.jsonc
|
|
|
|
Primary agents configuration:
|
|
|
|
```jsonc
|
|
{
|
|
"model": "ollama-cloud/glm-5.1",
|
|
"default_agent": "orchestrator",
|
|
"agent": {
|
|
"orchestrator": { "model": "ollama-cloud/glm-5.1", "variant": "thinking" },
|
|
"code": { "model": "ollama-cloud/qwen3-coder:480b" },
|
|
"ask": { "model": "ollama-cloud/glm-5.1", "variant": "instant" },
|
|
"plan": { "model": "ollama-cloud/nemotron-3-super" },
|
|
"debug": { "model": "ollama-cloud/glm-5.1", "variant": "thinking" }
|
|
}
|
|
}
|
|
```
|
|
|
|
## Rules System
|
|
|
|
Rules in `.kilo/rules/` are loaded globally for all agents:
|
|
|
|
### Critical Rules
|
|
|
|
| Rule | Purpose |
|
|
|------|---------|
|
|
| `atomic-tasks.md` | 1 action = 1 task, max 100 lines/file, task sizing |
|
|
| `modular-code.md` | Modules, services, repositories, events |
|
|
| `token-optimimization.md` | Token budgets, no scope creep |
|
|
| `gitea-centric-workflow.md` | Issues before work, progress tracking, research |
|
|
| `global.md` | Base coding rules |
|
|
|
|
### Language-Specific Rules
|
|
|
|
| Rule | Purpose |
|
|
|------|---------|
|
|
| `php.md` | PSR-12, TDD, security |
|
|
| `nodejs.md` | Express, JWT, async |
|
|
| `go.md` | Error wrapping, context, table-driven tests |
|
|
| `flutter.md` | Riverpod, Clean Architecture |
|
|
| `docker.md` | Multi-stage, security |
|
|
|
|
## Skills System
|
|
|
|
Skills are capability modules agents reference:
|
|
|
|
### PHP Development
|
|
|
|
| Skill | Lines | Purpose |
|
|
|-------|-------|---------|
|
|
| `php-laravel-patterns` | 403 | Routing, Eloquent, Services, Repositories, Auth, Queues |
|
|
| `php-symfony-patterns` | 233 | Controllers, Doctrine, Messenger, Voters |
|
|
| `php-wordpress-patterns` | 276 | Plugins, CPT, REST API, Security |
|
|
| `php-security` | 147 | OWASP Top 10, CSRF, XSS, SQL injection |
|
|
| `php-testing` | 242 | PHPUnit, Pest, Dusk browser tests |
|
|
| `php-modular-architecture` | 242 | Module separation, interfaces, events |
|
|
|
|
### Frontend Frameworks
|
|
|
|
| Skill | Lines | Purpose |
|
|
|-------|-------|---------|
|
|
| `nextjs-patterns` | 290 | Next.js 14+ App Router, Server Components, Server Actions, Auth.js |
|
|
| `vue-nuxt-patterns` | 270 | Vue 3 / Nuxt 3 Composition API, Pinia, Nitro, SSR |
|
|
| `react-patterns` | 240 | React 18+ hooks, Context, TanStack Query, React Hook Form |
|
|
|
|
### Python Development
|
|
|
|
| Skill | Lines | Purpose |
|
|
|-------|-------|---------|
|
|
| `python-django-patterns` | 200 | Django models, DRF, services, repositories |
|
|
| `python-fastapi-patterns` | 230 | FastAPI async, Pydantic, SQLAlchemy, dependencies |
|
|
|
|
### Infrastructure
|
|
|
|
| Skill | Purpose |
|
|
|-------|---------|
|
|
| `gitea-workflow` | Issue creation, quality gates, progress tracking |
|
|
| `gitea-commenting` | Comment format with auto-project detection |
|
|
| `agent-logging` | Execution logging to agent-executions.jsonl |
|
|
| `docker-compose` | Docker Compose patterns |
|
|
| `docker-swarm` | Docker Swarm orchestration |
|
|
|
|
## Execution Logging
|
|
|
|
Every agent invocation is logged to `.kilo/logs/agent-executions.jsonl`:
|
|
|
|
```jsonl
|
|
{"ts":"2026-04-18T14:00:00Z","agent":"php-developer","issue":42,"project":"UniqueSoft/my-shop","task":"Create Product model","subtask_type":"model_creation","duration_ms":45000,"tokens_used":8500,"status":"success","files":["app/Models/Product.php"],"score":8,"next_agent":"code-skeptic"}
|
|
```
|
|
|
|
### Required Fields
|
|
|
|
| Field | Description |
|
|
|-------|-------------|
|
|
| `agent` | Agent name |
|
|
| `issue` | Gitea issue number |
|
|
| `project` | Target project repo (auto-detected, NOT hardcoded) |
|
|
| `task` | Atomic task description |
|
|
| `duration_ms` | Execution time |
|
|
| `tokens_used` | Token estimate |
|
|
| `status` | success/fail/pass/blocked |
|
|
| `score` | Self-assessment 1-10 |
|
|
| `next_agent` | Next agent in pipeline |
|
|
|
|
### Statistics
|
|
|
|
```bash
|
|
bun run agent:stats # Last 30 days
|
|
bun run agent:stats:week # Last 7 days
|
|
bun run agent:stats:project # Filter by project
|
|
```
|
|
|
|
## Gitea Integration
|
|
|
|
### Centralized Authentication
|
|
|
|
All Gitea API calls use `get_gitea_token()` from `.kilo/shared/gitea-auth.md`. Configuration structure in `.kilo/gitea.jsonc` maps env var names — no actual credentials in code.
|
|
|
|
### Critical: Target Project Detection
|
|
|
|
Issues MUST be created in the target project, NOT in APAW:
|
|
|
|
```python
|
|
def get_target_repo():
|
|
"""Auto-detect from git remote - NEVER hardcode"""
|
|
result = subprocess.run(['git', 'remote', 'get-url', 'origin'], capture_output=True, text=True)
|
|
match = re.search(r'[:/]([^/]+/[^/]+?)(?:\.git)?$', result.stdout.strip())
|
|
if match:
|
|
return match.group(1)
|
|
return os.environ.get('GITEA_TARGET_REPO', 'UniqueSoft/APAW')
|
|
```
|
|
|
|
All API calls use `get_target_repo()` instead of hardcoded repo.
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `GITEA_API_URL` | `https://git.softuniq.eu/api/v1` | Gitea API endpoint |
|
|
| `GITEA_TOKEN` | - | Gitea API token (PREFERRED) |
|
|
| `GITEA_USER` | - | Gitea username (fallback for Basic Auth) |
|
|
| `GITEA_PASS` | - | Gitea password (fallback for Basic Auth) |
|
|
| `GITEA_TARGET_REPO` | auto-detect | Override target project |
|
|
| `TARGET_URL` | `http://localhost:3000` | URL for testing |
|
|
| `PIXELMATCH_THRESHOLD` | `0.05` | Visual diff tolerance |
|
|
|
|
Auth resolution: `GITEA_TOKEN` → `GITEA_USER+GITEA_PASS` → `ValueError`. See `.kilo/shared/gitea-auth.md`.
|
|
|
|
## Quick Reference
|
|
|
|
```bash
|
|
# Pipeline for issue
|
|
/pipeline 42
|
|
|
|
# Laravel app
|
|
/laravel project_name
|
|
|
|
# WordPress plugin
|
|
/wordpress plugin_name
|
|
|
|
# Agent statistics
|
|
bun run agent:stats
|
|
|
|
# Evolution dashboard
|
|
bun run sync:evolution
|
|
bun run evolution:open
|
|
|
|
# Docker containers
|
|
docker compose -f docker/docker-compose.web-testing.yml up -d
|
|
|
|
# Web tests
|
|
./scripts/web-test.sh https://your-app.com
|
|
``` |