aios-core 2.3.1 → 3.1.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.
@@ -0,0 +1,334 @@
1
+ ---
2
+ task: Design Squad from Documentation
3
+ responsavel: "@squad-creator"
4
+ responsavel_type: agent
5
+ atomic_layer: task
6
+ elicit: true
7
+ Entrada: |
8
+ - docs: Documentation sources (text, files, or verbal description)
9
+ - domain: Optional domain hint to guide analysis
10
+ - output_path: Where to save blueprint (default: ./squads/.designs/)
11
+ Saida: |
12
+ - blueprint_path: Path to generated squad-design.yaml
13
+ - summary: Human-readable summary of recommendations
14
+ - confidence: Overall confidence score (0-1)
15
+ Checklist:
16
+ - "[ ] Collect documentation input"
17
+ - "[ ] Analyze domain and extract concepts"
18
+ - "[ ] Generate agent recommendations"
19
+ - "[ ] Generate task recommendations"
20
+ - "[ ] Present recommendations for refinement"
21
+ - "[ ] Apply user adjustments"
22
+ - "[ ] Generate blueprint file"
23
+ - "[ ] Display next steps"
24
+ ---
25
+
26
+ # *design-squad
27
+
28
+ Analyzes documentation and guides the user through designing a squad structure with intelligent recommendations for agents and tasks.
29
+
30
+ ## Usage
31
+
32
+ ```bash
33
+ @squad-creator
34
+
35
+ *design-squad
36
+ # → Interactive mode, prompts for documentation
37
+
38
+ *design-squad --docs ./docs/prd/my-project.md
39
+ # → Analyzes specific file
40
+
41
+ *design-squad --docs ./docs/prd/my-project.md,./docs/specs/api.yaml
42
+ # → Analyzes multiple files
43
+
44
+ *design-squad --domain "e-commerce order management"
45
+ # → Uses domain hint for guidance
46
+ ```
47
+
48
+ ## Parameters
49
+
50
+ | Parameter | Type | Default | Description |
51
+ |-----------|------|---------|-------------|
52
+ | `--docs` | string | - | Comma-separated paths to documentation files |
53
+ | `--domain` | string | - | Domain hint to guide analysis |
54
+ | `--output` | string | ./squads/.designs/ | Output directory for blueprint |
55
+ | `--quick` | flag | false | Accept all recommendations without review |
56
+ | `--verbose` | flag | false | Show detailed analysis output |
57
+
58
+ ## Interactive Flow
59
+
60
+ ### Phase 1: Documentation Input
61
+
62
+ ```
63
+ ? How would you like to provide documentation?
64
+ 1. Paste text directly
65
+ 2. Provide file paths
66
+ 3. Describe the domain verbally
67
+ > 2
68
+
69
+ ? Documentation file paths (comma-separated):
70
+ > ./docs/prd/my-project.md, ./docs/specs/api.yaml
71
+
72
+ Analyzing documentation...
73
+ ```
74
+
75
+ ### Phase 2: Domain Confirmation
76
+
77
+ ```
78
+ Based on your documentation, I identified:
79
+
80
+ Domain: Order Management System
81
+ Key Entities: Order, Customer, Product, Payment, Shipment
82
+ Main Workflows:
83
+ 1. order-creation
84
+ 2. payment-processing
85
+ 3. inventory-check
86
+ 4. shipment-tracking
87
+
88
+ Is this correct? [Y/n/Adjust]
89
+ > Y
90
+ ```
91
+
92
+ ### Phase 3: Agent Review
93
+
94
+ ```
95
+ Recommended Agent 1 of 3:
96
+
97
+ ID: order-manager
98
+ Role: Manages order lifecycle from creation to fulfillment
99
+ Commands: *create-order, *update-order, *cancel-order
100
+ Confidence: 92%
101
+
102
+ [A]ccept / [R]eject / [M]odify / [S]kip to tasks
103
+ > A
104
+
105
+ Recommended Agent 2 of 3:
106
+ ...
107
+ ```
108
+
109
+ ### Phase 4: Task Review
110
+
111
+ ```
112
+ Tasks for order-manager:
113
+
114
+ 1. create-order.md (90% confidence)
115
+ Entrada: customer_id, items[], payment_method
116
+ Saida: order_id, status, total
117
+
118
+ 2. update-order.md (85% confidence)
119
+ Entrada: order_id, updates{}
120
+ Saida: updated_order, changelog
121
+
122
+ [A]ccept all / Review [1-2] / [R]eject all
123
+ > A
124
+ ```
125
+
126
+ ### Phase 5: Custom Additions
127
+
128
+ ```
129
+ Would you like to add any agents or tasks not recommended?
130
+
131
+ [A]dd agent / Add [T]ask / [C]ontinue to blueprint
132
+ > C
133
+ ```
134
+
135
+ ### Phase 6: Blueprint Generation
136
+
137
+ ```
138
+ Generating blueprint...
139
+
140
+ Summary:
141
+ Agents: 3 (3 recommended, 0 added)
142
+ Tasks: 8 (7 recommended, 1 added)
143
+ User adjustments: 2
144
+ Overall confidence: 88%
145
+
146
+ Saved: ./squads/.designs/order-management-squad-design.yaml
147
+
148
+ Next steps:
149
+ 1. Review blueprint: cat ./squads/.designs/order-management-squad-design.yaml
150
+ 2. Create squad: *create-squad order-management --from-design
151
+ 3. Or edit blueprint manually before creation
152
+ ```
153
+
154
+ ## Analysis Pipeline
155
+
156
+ ```
157
+ ┌─────────────────────────────────────────────────────────────────────┐
158
+ │ DOMAIN ANALYSIS PIPELINE │
159
+ ├─────────────────────────────────────────────────────────────────────┤
160
+ │ │
161
+ │ 1. INPUT NORMALIZATION │
162
+ │ ├── Parse markdown/yaml/json files │
163
+ │ ├── Extract text content │
164
+ │ └── Merge multiple sources │
165
+ │ │
166
+ │ 2. ENTITY EXTRACTION │
167
+ │ ├── Identify nouns and proper nouns (capitalized terms) │
168
+ │ ├── Detect domain-specific terms (repeated concepts) │
169
+ │ ├── Group related concepts │
170
+ │ └── Output: entities[] │
171
+ │ │
172
+ │ 3. WORKFLOW DETECTION │
173
+ │ ├── Identify action verbs (create, update, delete, process) │
174
+ │ ├── Detect sequential processes (steps, flows) │
175
+ │ ├── Map input → process → output patterns │
176
+ │ └── Output: workflows[] │
177
+ │ │
178
+ │ 4. INTEGRATION MAPPING │
179
+ │ ├── Detect external system references (API, database, service) │
180
+ │ ├── Identify third-party mentions │
181
+ │ └── Output: integrations[] │
182
+ │ │
183
+ │ 5. STAKEHOLDER IDENTIFICATION │
184
+ │ ├── Detect user types/roles (admin, user, manager) │
185
+ │ ├── Identify personas mentioned │
186
+ │ └── Output: stakeholders[] │
187
+ │ │
188
+ └─────────────────────────────────────────────────────────────────────┘
189
+ ```
190
+
191
+ ## Recommendation Engine
192
+
193
+ ```
194
+ ┌─────────────────────────────────────────────────────────────────────┐
195
+ │ RECOMMENDATION ENGINE │
196
+ ├─────────────────────────────────────────────────────────────────────┤
197
+ │ │
198
+ │ AGENT GENERATION: │
199
+ │ ┌─────────────────────────────────────────────────────────────────┐│
200
+ │ │ For each major workflow: ││
201
+ │ │ → Generate agent with matching role ││
202
+ │ │ → Derive commands from workflow steps ││
203
+ │ │ → Calculate confidence based on clarity ││
204
+ │ │ ││
205
+ │ │ Deduplication: ││
206
+ │ │ → Merge similar agents (>70% overlap) ││
207
+ │ │ → Consolidate commands ││
208
+ │ └─────────────────────────────────────────────────────────────────┘│
209
+ │ │
210
+ │ TASK GENERATION: │
211
+ │ ┌─────────────────────────────────────────────────────────────────┐│
212
+ │ │ For each agent command: ││
213
+ │ │ → Generate task following TASK-FORMAT-SPECIFICATION-V1 ││
214
+ │ │ → Derive entrada from workflow inputs ││
215
+ │ │ → Derive saida from workflow outputs ││
216
+ │ │ → Generate checklist from workflow steps ││
217
+ │ └─────────────────────────────────────────────────────────────────┘│
218
+ │ │
219
+ └─────────────────────────────────────────────────────────────────────┘
220
+ ```
221
+
222
+ ## Output: Blueprint Schema
223
+
224
+ ```yaml
225
+ # squad-design.yaml
226
+ squad:
227
+ name: my-domain-squad
228
+ description: "Generated from documentation analysis"
229
+ domain: domain-name
230
+
231
+ analysis:
232
+ entities: [Entity1, Entity2, ...]
233
+ workflows: [workflow-1, workflow-2, ...]
234
+ integrations: [API1, Service2, ...]
235
+ stakeholders: [Role1, Role2, ...]
236
+
237
+ recommendations:
238
+ agents:
239
+ - id: agent-id
240
+ role: "Agent role description"
241
+ commands: [cmd1, cmd2]
242
+ confidence: 0.92
243
+ user_added: false
244
+ user_modified: false
245
+
246
+ tasks:
247
+ - name: task-name
248
+ agent: agent-id
249
+ entrada: [input1, input2]
250
+ saida: [output1, output2]
251
+ confidence: 0.88
252
+
253
+ template: basic | etl | agent-only | custom
254
+ config_mode: extend | override | none
255
+
256
+ metadata:
257
+ created_at: "2025-12-18T00:00:00Z"
258
+ source_docs: ["./path/to/doc1.md"]
259
+ user_adjustments: 2
260
+ overall_confidence: 0.87
261
+ ```
262
+
263
+ ## Integration with *create-squad
264
+
265
+ After generating a blueprint, use it with *create-squad:
266
+
267
+ ```bash
268
+ *create-squad my-domain-squad --from-design ./squads/.designs/my-domain-squad-design.yaml
269
+ ```
270
+
271
+ This will:
272
+ 1. Load the blueprint
273
+ 2. Validate against schema
274
+ 3. Generate squad structure with custom agents/tasks from blueprint
275
+ 4. Skip interactive elicitation (uses blueprint values)
276
+
277
+ ## Error Handling
278
+
279
+ | Error | Cause | Resolution |
280
+ |-------|-------|------------|
281
+ | `NO_DOCUMENTATION` | No input provided | Provide docs via --docs or interactively |
282
+ | `PARSE_ERROR` | Cannot read/parse file | Check file format (md, yaml, json) |
283
+ | `EMPTY_ANALYSIS` | No domain concepts extracted | Provide more detailed documentation |
284
+ | `BLUEPRINT_EXISTS` | Blueprint already exists | Use --force to overwrite |
285
+
286
+ ## Implementation
287
+
288
+ ```javascript
289
+ const { SquadDesigner } = require('./.aios-core/development/scripts/squad');
290
+
291
+ async function designSquad(options) {
292
+ const designer = new SquadDesigner();
293
+
294
+ // 1. Collect documentation
295
+ const docs = await designer.collectDocumentation(options);
296
+
297
+ // 2. Analyze domain
298
+ const analysis = await designer.analyzeDomain(docs);
299
+
300
+ // 3. Generate recommendations
301
+ const recommendations = {
302
+ agents: designer.generateAgentRecommendations(analysis),
303
+ tasks: designer.generateTaskRecommendations(analysis)
304
+ };
305
+
306
+ // 4. Interactive refinement (unless --quick)
307
+ if (!options.quick) {
308
+ await designer.interactiveRefinement(recommendations);
309
+ }
310
+
311
+ // 5. Generate blueprint
312
+ const blueprint = await designer.generateBlueprint({
313
+ analysis,
314
+ recommendations,
315
+ metadata: {
316
+ source_docs: options.docs,
317
+ created_at: new Date().toISOString()
318
+ }
319
+ });
320
+
321
+ // 6. Save blueprint
322
+ const blueprintPath = await designer.saveBlueprint(blueprint, options.output);
323
+
324
+ return { blueprintPath, blueprint };
325
+ }
326
+ ```
327
+
328
+ ## Related
329
+
330
+ - **Agent:** @squad-creator (Craft)
331
+ - **Script:** squad-designer.js
332
+ - **Schema:** squad-design-schema.json
333
+ - **Integration:** *create-squad --from-design
334
+ - **Story:** SQS-9 (Squad Designer)
@@ -0,0 +1,65 @@
1
+ ---
2
+ task: Download Squad
3
+ responsavel: "@squad-creator"
4
+ responsavel_type: agent
5
+ atomic_layer: task
6
+ status: placeholder
7
+ sprint: 8
8
+ Entrada: |
9
+ - name: Nome do squad para baixar
10
+ - source: Fonte (aios-squads | synkra-api)
11
+ Saida: |
12
+ - squad_path: Caminho do squad baixado
13
+ - status: Sucesso ou erro
14
+ Checklist:
15
+ - "[ ] Implementar em Sprint 8 (SQS-5)"
16
+ ---
17
+
18
+ # *download-squad
19
+
20
+ > **PLACEHOLDER** - Implementation scheduled for Sprint 8 (Story SQS-5)
21
+
22
+ ## Planned Functionality
23
+
24
+ Downloads a public squad from the aios-squads repository or Synkra API marketplace.
25
+
26
+ ## Planned Usage
27
+
28
+ ```
29
+ @squad-creator
30
+
31
+ *download-squad etl-squad
32
+ # → Downloads from github.com/SynkraAI/aios-squads
33
+
34
+ *download-squad premium-pack --source synkra-api
35
+ # → Downloads from api.synkra.dev/squads (requires auth)
36
+ ```
37
+
38
+ ## Planned Features
39
+
40
+ 1. **Repository Source (Default)**
41
+ - Clone from github.com/SynkraAI/aios-squads
42
+ - Support specific versions via tags
43
+ - Validate squad before installation
44
+
45
+ 2. **Synkra API Source**
46
+ - Download from api.synkra.dev/squads
47
+ - Support premium/paid squads
48
+ - Require authentication
49
+
50
+ 3. **Installation**
51
+ - Install to ./squads/{name}/
52
+ - Run validation after download
53
+ - Show usage instructions
54
+
55
+ ## Related Story
56
+
57
+ - **SQS-5:** SquadSyncService (Sprint 8)
58
+ - **SQS-6:** Registry Integration (Sprint 8)
59
+
60
+ ## Current Status
61
+
62
+ This task is a placeholder. The full implementation will be done in Sprint 8.
63
+
64
+ For now, manually clone squads from:
65
+ - https://github.com/SynkraAI/aios-squads
@@ -0,0 +1,225 @@
1
+ ---
2
+ task: List Squads
3
+ responsavel: "@squad-creator"
4
+ responsavel_type: agent
5
+ atomic_layer: task
6
+ Entrada: |
7
+ - path: Caminho alternativo (opcional, default: ./squads)
8
+ - format: Formato de output (table | json | yaml)
9
+ Saida: |
10
+ - squads: Lista de squads encontrados
11
+ - count: Numero total de squads
12
+ Checklist:
13
+ - "[ ] Usar squad-generator.listLocal()"
14
+ - "[ ] Formatar output conforme format"
15
+ - "[ ] Exibir informacoes basicas de cada squad"
16
+ ---
17
+
18
+ # *list-squads
19
+
20
+ Lista todos os squads locais do projeto.
21
+
22
+ ## Uso
23
+
24
+ ```
25
+ @squad-creator
26
+ *list-squads
27
+ *list-squads --format json
28
+ *list-squads --path ./custom-squads
29
+ ```
30
+
31
+ ## Parametros
32
+
33
+ | Parameter | Type | Default | Description |
34
+ |-----------|------|---------|-------------|
35
+ | `--path` | string | ./squads | Path to squads directory |
36
+ | `--format` | string | table | Output format: table, json, yaml |
37
+ | `--include-invalid` | flag | false | Include squads without valid manifest |
38
+
39
+ ## Output Exemplo (Table)
40
+
41
+ ```
42
+ Local Squads (./squads/)
43
+
44
+ ┌─────────────────────┬─────────┬─────────────────────────────┬────────┐
45
+ │ Name │ Version │ Description │ Status │
46
+ ├─────────────────────┼─────────┼─────────────────────────────┼────────┤
47
+ │ meu-dominio-squad │ 1.0.0 │ Squad para automacao de X │ ✅ │
48
+ │ outro-squad │ 2.1.0 │ Outro squad customizado │ ✅ │
49
+ │ legacy-pack │ 1.0.0 │ Using config.yaml │ ⚠️ │
50
+ └─────────────────────┴─────────┴─────────────────────────────┴────────┘
51
+
52
+ Total: 3 squads (2 valid, 1 deprecated)
53
+ ```
54
+
55
+ ## Output Exemplo (JSON)
56
+
57
+ ```json
58
+ {
59
+ "squads": [
60
+ {
61
+ "name": "meu-dominio-squad",
62
+ "version": "1.0.0",
63
+ "description": "Squad para automacao de X",
64
+ "path": "./squads/meu-dominio-squad",
65
+ "status": "valid"
66
+ },
67
+ {
68
+ "name": "outro-squad",
69
+ "version": "2.1.0",
70
+ "description": "Outro squad customizado",
71
+ "path": "./squads/outro-squad",
72
+ "status": "valid"
73
+ }
74
+ ],
75
+ "count": 2,
76
+ "path": "./squads"
77
+ }
78
+ ```
79
+
80
+ ## Output Exemplo (YAML)
81
+
82
+ ```yaml
83
+ squads:
84
+ - name: meu-dominio-squad
85
+ version: 1.0.0
86
+ description: Squad para automacao de X
87
+ path: ./squads/meu-dominio-squad
88
+ status: valid
89
+ - name: outro-squad
90
+ version: 2.1.0
91
+ description: Outro squad customizado
92
+ path: ./squads/outro-squad
93
+ status: valid
94
+ count: 2
95
+ path: ./squads
96
+ ```
97
+
98
+ ## Status Indicators
99
+
100
+ | Status | Icon | Description |
101
+ |--------|------|-------------|
102
+ | valid | ✅ | Valid squad.yaml manifest |
103
+ | deprecated | ⚠️ | Using config.yaml (deprecated) |
104
+ | invalid | ❌ | No manifest found |
105
+
106
+ ## Flow
107
+
108
+ ```
109
+ 1. Parse arguments
110
+ ├── Get path (default: ./squads)
111
+ └── Get format (default: table)
112
+
113
+ 2. List squads
114
+ ├── Call SquadGenerator.listLocal()
115
+ └── Get array of squad info
116
+
117
+ 3. Filter results
118
+ ├── If --include-invalid → show all
119
+ └── If not → filter out invalid
120
+
121
+ 4. Format output
122
+ ├── If table → format as ASCII table
123
+ ├── If json → JSON.stringify
124
+ └── If yaml → yaml.dump
125
+
126
+ 5. Display result
127
+ └── Output formatted list
128
+ ```
129
+
130
+ ## Implementation
131
+
132
+ ```javascript
133
+ const { SquadGenerator } = require('./.aios-core/development/scripts/squad');
134
+
135
+ async function listSquads(options) {
136
+ const { path: squadsPath, format, includeInvalid } = options;
137
+
138
+ // List local squads
139
+ const generator = new SquadGenerator({ squadsPath });
140
+ let squads = await generator.listLocal();
141
+
142
+ // Filter if needed
143
+ if (!includeInvalid) {
144
+ squads = squads.filter(s => !s.invalid);
145
+ }
146
+
147
+ // Format output
148
+ switch (format) {
149
+ case 'json':
150
+ return JSON.stringify({ squads, count: squads.length, path: squadsPath }, null, 2);
151
+
152
+ case 'yaml':
153
+ return formatYaml({ squads, count: squads.length, path: squadsPath });
154
+
155
+ case 'table':
156
+ default:
157
+ return formatTable(squads, squadsPath);
158
+ }
159
+ }
160
+
161
+ function formatTable(squads, squadsPath) {
162
+ if (squads.length === 0) {
163
+ return `No squads found in ${squadsPath}/\n\nCreate one with: @squad-creator *create-squad my-squad`;
164
+ }
165
+
166
+ let output = `Local Squads (${squadsPath}/)\n\n`;
167
+
168
+ // Header
169
+ output += '┌' + '─'.repeat(22) + '┬' + '─'.repeat(9) + '┬' + '─'.repeat(30) + '┬' + '─'.repeat(8) + '┐\n';
170
+ output += '│ Name │ Version │ Description │ Status │\n';
171
+ output += '├' + '─'.repeat(22) + '┼' + '─'.repeat(9) + '┼' + '─'.repeat(30) + '┼' + '─'.repeat(8) + '┤\n';
172
+
173
+ // Rows
174
+ for (const squad of squads) {
175
+ const name = squad.name.padEnd(20).substring(0, 20);
176
+ const version = squad.version.padEnd(7).substring(0, 7);
177
+ const desc = (squad.description || '').padEnd(28).substring(0, 28);
178
+ const status = squad.invalid ? '❌' : squad.deprecated ? '⚠️' : '✅';
179
+ output += `│ ${name} │ ${version} │ ${desc} │ ${status} │\n`;
180
+ }
181
+
182
+ output += '└' + '─'.repeat(22) + '┴' + '─'.repeat(9) + '┴' + '─'.repeat(30) + '┴' + '─'.repeat(8) + '┘\n';
183
+
184
+ // Summary
185
+ const valid = squads.filter(s => !s.invalid && !s.deprecated).length;
186
+ const deprecated = squads.filter(s => s.deprecated).length;
187
+ const invalid = squads.filter(s => s.invalid).length;
188
+
189
+ output += `\nTotal: ${squads.length} squads`;
190
+ if (deprecated > 0 || invalid > 0) {
191
+ output += ` (${valid} valid`;
192
+ if (deprecated > 0) output += `, ${deprecated} deprecated`;
193
+ if (invalid > 0) output += `, ${invalid} invalid`;
194
+ output += ')';
195
+ }
196
+
197
+ return output;
198
+ }
199
+ ```
200
+
201
+ ## Empty State
202
+
203
+ When no squads are found:
204
+
205
+ ```
206
+ No squads found in ./squads/
207
+
208
+ Create one with: @squad-creator *create-squad my-squad
209
+
210
+ Or download a public squad: @squad-creator *download-squad squad-name
211
+ ```
212
+
213
+ ## Error Handling
214
+
215
+ | Error | Cause | Resolution |
216
+ |-------|-------|------------|
217
+ | `ENOENT` | Squads directory doesn't exist | Will return empty list |
218
+ | `PERMISSION_DENIED` | Can't read directory | Check permissions |
219
+
220
+ ## Related
221
+
222
+ - **Agent:** @squad-creator (Craft)
223
+ - **Script:** squad-generator.js (listLocal method)
224
+ - **Create:** *create-squad
225
+ - **Validate:** *validate-squad
@@ -0,0 +1,86 @@
1
+ ---
2
+ task: Publish Squad
3
+ responsavel: "@squad-creator"
4
+ responsavel_type: agent
5
+ atomic_layer: task
6
+ status: placeholder
7
+ sprint: 8
8
+ Entrada: |
9
+ - name: Nome do squad para publicar
10
+ - target: Destino (aios-squads | synkra-api)
11
+ Saida: |
12
+ - pr_url: URL do PR criado (para aios-squads)
13
+ - api_url: URL na API (para synkra-api)
14
+ - status: Sucesso ou erro
15
+ Checklist:
16
+ - "[ ] Implementar em Sprint 8 (SQS-6)"
17
+ ---
18
+
19
+ # *publish-squad
20
+
21
+ > **PLACEHOLDER** - Implementation scheduled for Sprint 8 (Story SQS-6)
22
+
23
+ ## Planned Functionality
24
+
25
+ Publishes a local squad to the aios-squads repository (via PR) or Synkra API marketplace.
26
+
27
+ ## Planned Usage
28
+
29
+ ```
30
+ @squad-creator
31
+
32
+ *publish-squad meu-squad
33
+ # → Creates PR to github.com/SynkraAI/aios-squads
34
+
35
+ *publish-squad meu-squad --target synkra-api
36
+ # → Publishes to api.synkra.dev/squads (requires auth)
37
+ ```
38
+
39
+ ## Planned Features
40
+
41
+ 1. **Pre-publish Validation**
42
+ - Run *validate-squad before publishing
43
+ - Check required fields in squad.yaml
44
+ - Verify license and author info
45
+
46
+ 2. **GitHub Repository (Default)**
47
+ - Fork aios-squads if needed
48
+ - Copy squad to squads/{name}/
49
+ - Create PR with description
50
+ - Add appropriate labels
51
+
52
+ 3. **Synkra API**
53
+ - Upload to api.synkra.dev/squads
54
+ - Support pricing configuration
55
+ - Manage versions and updates
56
+
57
+ ## Workflow
58
+
59
+ ```
60
+ 1. Validate squad
61
+ ├── Run *validate-squad
62
+ └── Ensure no errors
63
+
64
+ 2. Prepare for publishing
65
+ ├── Check license
66
+ ├── Check author
67
+ └── Generate changelog
68
+
69
+ 3. Publish
70
+ ├── If aios-squads → Create PR
71
+ └── If synkra-api → Upload via API
72
+
73
+ 4. Display result
74
+ └── Show URL and next steps
75
+ ```
76
+
77
+ ## Related Story
78
+
79
+ - **SQS-6:** Registry Integration (Sprint 8)
80
+
81
+ ## Current Status
82
+
83
+ This task is a placeholder. The full implementation will be done in Sprint 8.
84
+
85
+ For now, manually create PRs at:
86
+ - https://github.com/SynkraAI/aios-squads