UNPKG

aios-core

Version:

Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework

313 lines (260 loc) 8.45 kB
--- task: Create Squad responsavel: "@squad-creator" responsavel_type: agent atomic_layer: task Entrada: | - name: Nome do squad (kebab-case, obrigatorio) - description: Descricao (opcional, elicitacao) - author: Autor (opcional, default: git config user.name) - license: Licenca (opcional, default: MIT) - template: Template base (basic | etl | agent-only) - config_mode: extend | override | none Saida: | - squad_path: Caminho do squad criado - manifest: Conteudo do squad.yaml gerado - next_steps: Instrucoes para proximos passos Checklist: - "[ ] Validar nome (kebab-case, nao existe)" - "[ ] Coletar informacoes via elicitacao" - "[ ] Gerar estrutura de diretorios" - "[ ] Gerar squad.yaml" - "[ ] Gerar arquivos de config (coding-standards, etc.)" - "[ ] Gerar exemplo de agent" - "[ ] Gerar exemplo de task" - "[ ] Executar validacao inicial" - "[ ] Exibir proximos passos" --- # *create-squad Cria um novo squad seguindo a arquitetura task-first do AIOS. ## Uso ``` @squad-creator *create-squad # → Modo interativo, elicita todas as informacoes *create-squad meu-squad # → Usa defaults para o resto *create-squad meu-squad --template etl --author "Meu Nome" # → Especifica opcoes diretamente ``` ## Parametros | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | `name` | string | - | Squad name (kebab-case, required) | | `--description` | string | "Custom squad" | Squad description | | `--author` | string | git user.name | Author name | | `--license` | string | MIT | License type | | `--template` | string | basic | Template: basic, etl, agent-only | | `--config-mode` | string | extend | Config inheritance: extend, override, none | | `--skip-validation` | flag | false | Skip initial validation | | `--yes` | flag | false | Skip interactive prompts, use defaults | ## Elicitacao Interativa ``` ? Squad name: meu-dominio-squad ? Description: Squad para automacao de processos X ? Author: [git config user.name] ? License: (MIT) > MIT Apache-2.0 ISC UNLICENSED ? Template: > basic (estrutura minima) etl (processamento de dados) agent-only (apenas agentes) ? Include example agent? (Y/n) ? Include example task? (Y/n) ? Config inheritance: > extend (adiciona as regras do core) override (substitui regras do core) none (sem heranca) ? Minimum AIOS version: (2.1.0) ``` ## Templates Disponiveis | Template | Description | Components | |----------|-------------|------------| | `basic` | Estrutura minima | 1 agent, 1 task | | `etl` | Processamento de dados | 2 agents, 3 tasks, scripts | | `agent-only` | Apenas agentes | 2 agents, sem tasks | ## Estrutura Gerada ### Com Project Configs (SQS-10) Quando o projeto tem `docs/framework/` com arquivos de config (CODING-STANDARDS.md, etc.), o squad referencia esses arquivos ao invés de criar cópias locais: ``` ./squads/meu-dominio-squad/ ├── squad.yaml # Manifest (referencia docs/framework/) ├── README.md # Documentacao ├── config/ └── .gitkeep # Configs em docs/framework/ ├── agents/ └── example-agent.md # Agente de exemplo ├── tasks/ └── example-agent-task.md # Task de exemplo ... ``` ### Sem Project Configs (Fallback) Quando o projeto NÃO tem `docs/framework/`, cria arquivos locais: ``` ./squads/meu-dominio-squad/ ├── squad.yaml # Manifest ├── README.md # Documentacao ├── config/ ├── coding-standards.md # Extends/override core ├── tech-stack.md # Tecnologias do squad └── source-tree.md # Estrutura documentada ├── agents/ └── example-agent.md # Agente de exemplo ├── tasks/ └── example-agent-task.md # Task de exemplo ├── checklists/ └── .gitkeep ├── workflows/ └── .gitkeep ├── templates/ └── .gitkeep ├── tools/ └── .gitkeep ├── scripts/ └── .gitkeep └── data/ └── .gitkeep ``` ## squad.yaml Gerado ```yaml name: meu-dominio-squad version: 1.0.0 description: Squad para automacao de processos X author: Meu Nome license: MIT slashPrefix: meu-dominio aios: minVersion: "2.1.0" type: squad components: tasks: - example-agent-task.md agents: - example-agent.md workflows: [] checklists: [] templates: [] tools: [] scripts: [] config: extends: extend # SQS-10: References project-level files when docs/framework/ exists coding-standards: ../../docs/framework/CODING-STANDARDS.md # or config/coding-standards.md tech-stack: ../../docs/framework/TECH-STACK.md # or config/tech-stack.md source-tree: ../../docs/framework/SOURCE-TREE.md # or config/source-tree.md dependencies: node: [] python: [] squads: [] tags: - custom - automation ``` ## Flow ``` 1. Parse arguments ├── If name provided validate kebab-case └── If no name prompt for name 2. Check if squad exists ├── If exists error with suggestion └── If not exists continue 3. Collect configuration ├── If --yes flag use all defaults └── If interactive elicit each option 4. Generate squad structure ├── Create directories ├── Generate squad.yaml from template ├── Generate config files ├── Generate example agent (if requested) ├── Generate example task (if requested) └── Add .gitkeep to empty directories 5. Run initial validation ├── If --skip-validation skip └── If validation run squad-validator 6. Display success message └── Show next steps ``` ## Output de Sucesso ``` Squad created successfully! 📁 Location: ./squads/meu-dominio-squad/ 📋 Next steps: 1. cd squads/meu-dominio-squad 2. Customize squad.yaml with your details 3. Create your agents in agents/ 4. Create tasks in tasks/ (task-first!) 5. Validate: @squad-creator *validate-squad meu-dominio-squad 📚 Documentation: - Squad Guide: docs/guides/squads-guide.md - Task Format: .aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md 🚀 When ready to share: - Local only: Keep in ./squads/ (private) - Public: @squad-creator *publish-squad meu-dominio-squad - API: @squad-creator *sync-squad-synkra meu-dominio-squad ``` ## Error Handling | Error | Cause | Resolution | |-------|-------|------------| | `INVALID_NAME` | Name not kebab-case | Use lowercase with hyphens | | `SQUAD_EXISTS` | Squad already exists | Choose different name or delete existing | | `PERMISSION_DENIED` | Can't write to squads/ | Check directory permissions | | `VALIDATION_FAILED` | Generated squad invalid | Check error details, fix manually | ## Implementation ```javascript const { SquadGenerator } = require('./.aios-core/development/scripts/squad'); const { SquadValidator } = require('./.aios-core/development/scripts/squad'); async function createSquad(options) { const { name, description, author, license, template, configMode, skipValidation, includeAgent, includeTask, aiosMinVersion } = options; // Validate name if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(name)) { throw new Error('INVALID_NAME: Squad name must be kebab-case'); } // Generate squad const generator = new SquadGenerator(); const result = await generator.generate({ name, description, author, license, template, configMode, includeAgent, includeTask, aiosMinVersion }); // Validate (unless skipped) if (!skipValidation) { const validator = new SquadValidator(); const validation = await validator.validate(result.path); if (!validation.valid) { console.warn('Warning: Generated squad has validation issues'); console.warn(validator.formatResult(validation, result.path)); } } // Display success console.log(`\n✅ Squad created successfully!\n`); console.log(`📁 Location: ${result.path}/\n`); displayNextSteps(name); return result; } ``` ## Related - **Agent:** @squad-creator (Craft) - **Script:** squad-generator.js - **Validator:** squad-validator.js (SQS-3) - **Loader:** squad-loader.js (SQS-2)