aios-core 4.0.2 → 4.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.
- package/.aios-core/cli/commands/migrate/analyze.js +6 -6
- package/.aios-core/cli/commands/migrate/backup.js +2 -2
- package/.aios-core/cli/commands/migrate/execute.js +4 -4
- package/.aios-core/cli/commands/migrate/index.js +5 -5
- package/.aios-core/cli/commands/migrate/rollback.js +6 -6
- package/.aios-core/cli/commands/migrate/update-imports.js +2 -2
- package/.aios-core/cli/commands/migrate/validate.js +2 -2
- package/.aios-core/cli/commands/pro/index.js +52 -0
- package/.aios-core/cli/index.js +1 -1
- package/.aios-core/core/ids/registry-updater.js +29 -3
- package/.aios-core/core/migration/migration-config.yaml +2 -2
- package/.aios-core/core/migration/module-mapping.yaml +2 -2
- package/.aios-core/core/registry/README.md +2 -2
- package/.aios-core/core/synapse/context/context-builder.js +34 -0
- package/.aios-core/core/synapse/diagnostics/collectors/consistency-collector.js +168 -0
- package/.aios-core/core/synapse/diagnostics/collectors/hook-collector.js +129 -0
- package/.aios-core/core/synapse/diagnostics/collectors/manifest-collector.js +82 -0
- package/.aios-core/core/synapse/diagnostics/collectors/output-analyzer.js +134 -0
- package/.aios-core/core/synapse/diagnostics/collectors/pipeline-collector.js +75 -0
- package/.aios-core/core/synapse/diagnostics/collectors/quality-collector.js +252 -0
- package/.aios-core/core/synapse/diagnostics/collectors/relevance-matrix.js +174 -0
- package/.aios-core/core/synapse/diagnostics/collectors/safe-read-json.js +31 -0
- package/.aios-core/core/synapse/diagnostics/collectors/session-collector.js +102 -0
- package/.aios-core/core/synapse/diagnostics/collectors/timing-collector.js +126 -0
- package/.aios-core/core/synapse/diagnostics/collectors/uap-collector.js +83 -0
- package/.aios-core/core/synapse/diagnostics/report-formatter.js +484 -0
- package/.aios-core/core/synapse/diagnostics/synapse-diagnostics.js +95 -0
- package/.aios-core/core/synapse/engine.js +73 -20
- package/.aios-core/core/synapse/runtime/hook-runtime.js +60 -0
- package/.aios-core/core-config.yaml +6 -0
- package/.aios-core/data/agent-config-requirements.yaml +2 -2
- package/.aios-core/data/aios-kb.md +4 -4
- package/.aios-core/data/entity-registry.yaml +5 -5
- package/.aios-core/development/agents/architect.md +10 -10
- package/.aios-core/development/agents/devops.md +93 -50
- package/.aios-core/development/agents/qa.md +94 -40
- package/.aios-core/development/agents/ux-design-expert.md +25 -25
- package/.aios-core/development/scripts/activation-runtime.js +63 -0
- package/.aios-core/development/scripts/generate-greeting.js +9 -8
- package/.aios-core/development/scripts/unified-activation-pipeline.js +102 -2
- package/.aios-core/development/tasks/{db-expansion-pack-integration.md → db-squad-integration.md} +5 -5
- package/.aios-core/development/tasks/{integrate-expansion-pack.md → integrate-squad.md} +2 -2
- package/.aios-core/development/tasks/next.md +3 -3
- package/.aios-core/development/tasks/pr-automation.md +2 -2
- package/.aios-core/development/tasks/publish-npm.md +257 -0
- package/.aios-core/development/tasks/release-management.md +4 -4
- package/.aios-core/development/tasks/setup-github.md +1 -1
- package/.aios-core/development/tasks/squad-creator-migrate.md +1 -1
- package/.aios-core/development/tasks/squad-creator-sync-ide-command.md +14 -14
- package/.aios-core/development/tasks/update-aios.md +1 -1
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +1 -1
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +5 -5
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +21 -21
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +25 -25
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +4 -4
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +3 -3
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +13 -13
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +1 -1
- package/.aios-core/framework-config.yaml +4 -0
- package/.aios-core/infrastructure/scripts/codex-skills-sync/index.js +182 -0
- package/.aios-core/infrastructure/scripts/codex-skills-sync/validate.js +172 -0
- package/.aios-core/infrastructure/scripts/ide-sync/README.md +14 -0
- package/.aios-core/infrastructure/scripts/ide-sync/index.js +6 -0
- package/.aios-core/infrastructure/scripts/tool-resolver.js +4 -4
- package/.aios-core/infrastructure/scripts/validate-paths.js +142 -0
- package/.aios-core/infrastructure/templates/aios-sync.yaml.template +11 -11
- package/.aios-core/infrastructure/templates/github-workflows/README.md +1 -1
- package/.aios-core/install-manifest.yaml +190 -106
- package/.aios-core/local-config.yaml.template +2 -0
- package/.aios-core/product/README.md +2 -2
- package/.aios-core/product/data/integration-patterns.md +1 -1
- package/.aios-core/product/templates/ide-rules/cline-rules.md +1 -1
- package/.aios-core/product/templates/ide-rules/codex-rules.md +65 -0
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +1 -1
- package/.aios-core/product/templates/ide-rules/roo-rules.md +1 -1
- package/.aios-core/user-guide.md +15 -14
- package/.aios-core/workflow-intelligence/engine/output-formatter.js +1 -1
- package/.claude/hooks/enforce-architecture-first.py +196 -0
- package/.claude/hooks/install-hooks.sh +41 -0
- package/.claude/hooks/mind-clone-governance.py +192 -0
- package/.claude/hooks/pre-commit-mmos-guard.sh +99 -0
- package/.claude/hooks/pre-commit-version-check.sh +156 -0
- package/.claude/hooks/read-protection.py +151 -0
- package/.claude/hooks/slug-validation.py +176 -0
- package/.claude/hooks/sql-governance.py +182 -0
- package/.claude/hooks/synapse-engine.js +9 -20
- package/.claude/hooks/write-path-validation.py +194 -0
- package/README.md +44 -14
- package/bin/aios-init.js +255 -184
- package/bin/aios-minimal.js +2 -2
- package/bin/aios.js +19 -19
- package/package.json +7 -4
- package/packages/aios-pro-cli/bin/aios-pro.js +75 -2
- package/packages/aios-pro-cli/package.json +5 -1
- package/packages/aios-pro-cli/src/recover.js +100 -0
- package/packages/installer/src/__tests__/performance-benchmark.js +382 -0
- package/packages/installer/src/config/ide-configs.js +12 -1
- package/packages/installer/src/config/templates/core-config-template.js +2 -2
- package/packages/installer/src/installer/aios-core-installer.js +2 -2
- package/packages/installer/src/installer/file-hasher.js +97 -0
- package/packages/installer/src/installer/post-install-validator.js +41 -1
- package/packages/installer/src/pro/pro-scaffolder.js +335 -0
- package/packages/installer/src/utils/aios-colors.js +2 -2
- package/packages/installer/src/wizard/feedback.js +1 -1
- package/packages/installer/src/wizard/ide-config-generator.js +2 -2
- package/packages/installer/src/wizard/index.js +58 -19
- package/packages/installer/src/wizard/pro-setup.js +547 -0
- package/packages/installer/src/wizard/questions.js +20 -14
- package/packages/installer/src/wizard/validators.js +1 -1
- package/scripts/package-synapse.js +323 -0
- package/scripts/validate-package-completeness.js +317 -0
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
* @created Story SYN-6 - SynapseEngine Orchestrator + Output Formatter
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
|
|
13
16
|
const {
|
|
14
17
|
estimateContextPercent,
|
|
15
18
|
calculateBracket,
|
|
@@ -18,6 +21,7 @@ const {
|
|
|
18
21
|
needsMemoryHints,
|
|
19
22
|
needsHandoffWarning,
|
|
20
23
|
} = require('./context/context-tracker');
|
|
24
|
+
const { buildLayerContext } = require('./context/context-builder');
|
|
21
25
|
|
|
22
26
|
const { formatSynapseRules } = require('./output/formatter');
|
|
23
27
|
const { MemoryBridge } = require('./memory/memory-bridge');
|
|
@@ -70,9 +74,9 @@ class PipelineMetrics {
|
|
|
70
74
|
constructor() {
|
|
71
75
|
/** @type {Object.<string, object>} Per-layer metrics keyed by name */
|
|
72
76
|
this.layers = {};
|
|
73
|
-
/** @type {
|
|
77
|
+
/** @type {bigint|null} Pipeline start hrtime (nanoseconds) */
|
|
74
78
|
this.totalStart = null;
|
|
75
|
-
/** @type {
|
|
79
|
+
/** @type {bigint|null} Pipeline end hrtime (nanoseconds) */
|
|
76
80
|
this.totalEnd = null;
|
|
77
81
|
}
|
|
78
82
|
|
|
@@ -82,7 +86,7 @@ class PipelineMetrics {
|
|
|
82
86
|
* @param {string} name - Layer name
|
|
83
87
|
*/
|
|
84
88
|
startLayer(name) {
|
|
85
|
-
this.layers[name] = { start:
|
|
89
|
+
this.layers[name] = { start: process.hrtime.bigint(), status: 'running' };
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
/**
|
|
@@ -97,8 +101,9 @@ class PipelineMetrics {
|
|
|
97
101
|
this.layers[name] = { status: 'ok', rules: rulesCount };
|
|
98
102
|
return;
|
|
99
103
|
}
|
|
100
|
-
|
|
101
|
-
layer.
|
|
104
|
+
const endTime = process.hrtime.bigint();
|
|
105
|
+
layer.end = endTime;
|
|
106
|
+
layer.duration = Number(endTime - layer.start) / 1e6;
|
|
102
107
|
layer.status = 'ok';
|
|
103
108
|
layer.rules = rulesCount;
|
|
104
109
|
}
|
|
@@ -122,8 +127,9 @@ class PipelineMetrics {
|
|
|
122
127
|
errorLayer(name, error) {
|
|
123
128
|
const existing = this.layers[name] || {};
|
|
124
129
|
if (existing.start) {
|
|
125
|
-
|
|
126
|
-
existing.
|
|
130
|
+
const endTime = process.hrtime.bigint();
|
|
131
|
+
existing.end = endTime;
|
|
132
|
+
existing.duration = Number(endTime - existing.start) / 1e6;
|
|
127
133
|
}
|
|
128
134
|
this.layers[name] = {
|
|
129
135
|
...existing,
|
|
@@ -148,7 +154,7 @@ class PipelineMetrics {
|
|
|
148
154
|
const values = Object.values(this.layers);
|
|
149
155
|
return {
|
|
150
156
|
total_ms: this.totalStart != null && this.totalEnd != null
|
|
151
|
-
? this.totalEnd - this.totalStart
|
|
157
|
+
? Number(this.totalEnd - this.totalStart) / 1e6
|
|
152
158
|
: 0,
|
|
153
159
|
layers_loaded: values.filter(l => l.status === 'ok').length,
|
|
154
160
|
layers_skipped: values.filter(l => l.status === 'skipped').length,
|
|
@@ -221,7 +227,7 @@ class SynapseEngine {
|
|
|
221
227
|
const safeProcessConfig = (processConfig && typeof processConfig === 'object') ? processConfig : {};
|
|
222
228
|
const mergedConfig = { ...this.config, ...safeProcessConfig };
|
|
223
229
|
const metrics = new PipelineMetrics();
|
|
224
|
-
metrics.totalStart =
|
|
230
|
+
metrics.totalStart = process.hrtime.bigint();
|
|
225
231
|
|
|
226
232
|
// 1. Calculate bracket
|
|
227
233
|
const promptCount = (session && session.prompt_count) || 0;
|
|
@@ -232,7 +238,7 @@ class SynapseEngine {
|
|
|
232
238
|
|
|
233
239
|
// Guard: no layer config (invalid bracket — should not happen)
|
|
234
240
|
if (!layerConfig) {
|
|
235
|
-
metrics.totalEnd =
|
|
241
|
+
metrics.totalEnd = process.hrtime.bigint();
|
|
236
242
|
return { xml: '', metrics: metrics.getSummary() };
|
|
237
243
|
}
|
|
238
244
|
|
|
@@ -249,8 +255,8 @@ class SynapseEngine {
|
|
|
249
255
|
continue;
|
|
250
256
|
}
|
|
251
257
|
|
|
252
|
-
// Check hard pipeline timeout
|
|
253
|
-
if (
|
|
258
|
+
// Check hard pipeline timeout (convert hrtime to ms for comparison)
|
|
259
|
+
if (Number(process.hrtime.bigint() - metrics.totalStart) / 1e6 > PIPELINE_TIMEOUT_MS) {
|
|
254
260
|
// Log remaining layers as skipped
|
|
255
261
|
const remaining = this.layers.slice(this.layers.indexOf(layer));
|
|
256
262
|
for (const r of remaining) {
|
|
@@ -263,16 +269,14 @@ class SynapseEngine {
|
|
|
263
269
|
|
|
264
270
|
// Execute layer via safe wrapper
|
|
265
271
|
metrics.startLayer(layer.name);
|
|
266
|
-
const context = {
|
|
272
|
+
const context = buildLayerContext({
|
|
267
273
|
prompt,
|
|
268
274
|
session: session || {},
|
|
269
|
-
config:
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
manifest: mergedConfig.manifest || {},
|
|
273
|
-
},
|
|
275
|
+
config: mergedConfig,
|
|
276
|
+
synapsePath: this.synapsePath,
|
|
277
|
+
manifest: mergedConfig.manifest || {},
|
|
274
278
|
previousLayers,
|
|
275
|
-
};
|
|
279
|
+
});
|
|
276
280
|
|
|
277
281
|
const result = layer._safeProcess(context);
|
|
278
282
|
|
|
@@ -301,9 +305,12 @@ class SynapseEngine {
|
|
|
301
305
|
}
|
|
302
306
|
}
|
|
303
307
|
|
|
304
|
-
metrics.totalEnd =
|
|
308
|
+
metrics.totalEnd = process.hrtime.bigint();
|
|
305
309
|
const summary = metrics.getSummary();
|
|
306
310
|
|
|
311
|
+
// Persist hook metrics (fire-and-forget)
|
|
312
|
+
this._persistHookMetrics(summary, bracket, mergedConfig);
|
|
313
|
+
|
|
307
314
|
// 4. Format output
|
|
308
315
|
const xml = formatSynapseRules(
|
|
309
316
|
results,
|
|
@@ -318,6 +325,52 @@ class SynapseEngine {
|
|
|
318
325
|
|
|
319
326
|
return { xml, metrics: summary };
|
|
320
327
|
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Persist hook metrics to .synapse/metrics/hook-metrics.json (fire-and-forget).
|
|
331
|
+
* SYN-14: Includes hookBootMs from _hookBootTime passed via processConfig.
|
|
332
|
+
* @param {object} summary - Pipeline metrics summary
|
|
333
|
+
* @param {string} bracket - Context bracket
|
|
334
|
+
* @param {object} [config] - Merged config (may contain _hookBootTime bigint)
|
|
335
|
+
*/
|
|
336
|
+
_persistHookMetrics(summary, bracket, config) {
|
|
337
|
+
try {
|
|
338
|
+
const synapsePath = this.synapsePath;
|
|
339
|
+
if (!synapsePath || !fs.existsSync(synapsePath)) return;
|
|
340
|
+
const metricsDir = path.join(synapsePath, 'metrics');
|
|
341
|
+
if (!fs.existsSync(metricsDir)) {
|
|
342
|
+
fs.mkdirSync(metricsDir, { recursive: true });
|
|
343
|
+
}
|
|
344
|
+
// SYN-14: Calculate hook boot time if _hookBootTime was passed
|
|
345
|
+
const hookBootTime = config && config._hookBootTime;
|
|
346
|
+
const hookBootMs = hookBootTime ? Number(process.hrtime.bigint() - hookBootTime) / 1e6 : 0;
|
|
347
|
+
const data = {
|
|
348
|
+
totalDuration: summary.total_ms,
|
|
349
|
+
hookBootMs,
|
|
350
|
+
bracket,
|
|
351
|
+
layersLoaded: summary.layers_loaded,
|
|
352
|
+
layersSkipped: summary.layers_skipped,
|
|
353
|
+
layersErrored: summary.layers_errored,
|
|
354
|
+
totalRules: summary.total_rules,
|
|
355
|
+
perLayer: {},
|
|
356
|
+
timestamp: new Date().toISOString(),
|
|
357
|
+
};
|
|
358
|
+
// Convert per_layer to serializable format (strip bigint start/end)
|
|
359
|
+
for (const [name, info] of Object.entries(summary.per_layer)) {
|
|
360
|
+
data.perLayer[name] = {
|
|
361
|
+
duration: info.duration || 0,
|
|
362
|
+
status: info.status || 'unknown',
|
|
363
|
+
rules: info.rules || 0,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
fs.writeFileSync(
|
|
367
|
+
path.join(metricsDir, 'hook-metrics.json'),
|
|
368
|
+
JSON.stringify(data, null, 2), 'utf8',
|
|
369
|
+
);
|
|
370
|
+
} catch {
|
|
371
|
+
// Fire-and-forget: never block the hook pipeline
|
|
372
|
+
}
|
|
373
|
+
}
|
|
321
374
|
}
|
|
322
375
|
|
|
323
376
|
module.exports = {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Resolve runtime dependencies for Synapse hook execution.
|
|
8
|
+
*
|
|
9
|
+
* @param {{cwd?: string, sessionId?: string}} input
|
|
10
|
+
* @returns {{
|
|
11
|
+
* engine: import('../engine').SynapseEngine,
|
|
12
|
+
* session: Object
|
|
13
|
+
* } | null}
|
|
14
|
+
*/
|
|
15
|
+
function resolveHookRuntime(input) {
|
|
16
|
+
const cwd = input && input.cwd;
|
|
17
|
+
const sessionId = input && input.sessionId;
|
|
18
|
+
if (!cwd || typeof cwd !== 'string') return null;
|
|
19
|
+
|
|
20
|
+
const synapsePath = path.join(cwd, '.synapse');
|
|
21
|
+
if (!fs.existsSync(synapsePath)) return null;
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const { loadSession } = require(
|
|
25
|
+
path.join(cwd, '.aios-core', 'core', 'synapse', 'session', 'session-manager.js'),
|
|
26
|
+
);
|
|
27
|
+
const { SynapseEngine } = require(
|
|
28
|
+
path.join(cwd, '.aios-core', 'core', 'synapse', 'engine.js'),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const sessionsDir = path.join(synapsePath, 'sessions');
|
|
32
|
+
const session = loadSession(sessionId, sessionsDir) || { prompt_count: 0 };
|
|
33
|
+
const engine = new SynapseEngine(synapsePath);
|
|
34
|
+
|
|
35
|
+
return { engine, session };
|
|
36
|
+
} catch (error) {
|
|
37
|
+
if (process.env.DEBUG === '1') {
|
|
38
|
+
console.error(`[hook-runtime] Failed to resolve runtime: ${error.message}`);
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Normalize hook output payload shape.
|
|
46
|
+
* @param {string} xml
|
|
47
|
+
* @returns {{hookSpecificOutput: {additionalContext: string}}}
|
|
48
|
+
*/
|
|
49
|
+
function buildHookOutput(xml) {
|
|
50
|
+
return {
|
|
51
|
+
hookSpecificOutput: {
|
|
52
|
+
additionalContext: xml || '',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = {
|
|
58
|
+
resolveHookRuntime,
|
|
59
|
+
buildHookOutput,
|
|
60
|
+
};
|
|
@@ -45,10 +45,12 @@ mindsLocation: outputs/minds
|
|
|
45
45
|
ide:
|
|
46
46
|
selected:
|
|
47
47
|
- vscode
|
|
48
|
+
- codex
|
|
48
49
|
- cursor
|
|
49
50
|
- claude-code
|
|
50
51
|
configs:
|
|
51
52
|
vscode: true
|
|
53
|
+
codex: true
|
|
52
54
|
cursor: true
|
|
53
55
|
windsurf: false
|
|
54
56
|
zed: false
|
|
@@ -307,6 +309,10 @@ ideSync:
|
|
|
307
309
|
enabled: true
|
|
308
310
|
path: .claude/commands/AIOS/agents
|
|
309
311
|
format: full-markdown-yaml
|
|
312
|
+
codex:
|
|
313
|
+
enabled: true
|
|
314
|
+
path: .codex/agents
|
|
315
|
+
format: full-markdown-yaml
|
|
310
316
|
cursor:
|
|
311
317
|
enabled: true
|
|
312
318
|
path: .cursor/rules/agents
|
|
@@ -250,7 +250,7 @@ agents:
|
|
|
250
250
|
files_loaded: []
|
|
251
251
|
lazy_loading:
|
|
252
252
|
agent_registry: true # Load when validating/creating squads
|
|
253
|
-
|
|
253
|
+
squad_manifest: true # Load when managing squads
|
|
254
254
|
performance_target: <150ms
|
|
255
255
|
|
|
256
256
|
# ======================================================================
|
|
@@ -280,7 +280,7 @@ lazy_loading_strategy:
|
|
|
280
280
|
expansionPacks:
|
|
281
281
|
size: variable
|
|
282
282
|
load_only_when: pack requested by user
|
|
283
|
-
description: Optional
|
|
283
|
+
description: Optional squads
|
|
284
284
|
fallback: []
|
|
285
285
|
|
|
286
286
|
registry:
|
|
@@ -855,7 +855,7 @@ For full details, see `CONTRIBUTING.md`. Key points:
|
|
|
855
855
|
|
|
856
856
|
### What Are Expansion Packs?
|
|
857
857
|
|
|
858
|
-
|
|
858
|
+
Squads extend AIOS-Method beyond traditional software development into ANY domain. They provide specialized agent teams, templates, and workflows while keeping the core framework lean and focused on development.
|
|
859
859
|
|
|
860
860
|
### Why Use Expansion Packs?
|
|
861
861
|
|
|
@@ -883,7 +883,7 @@ Expansion packs extend AIOS-Method beyond traditional software development into
|
|
|
883
883
|
|
|
884
884
|
**Specialty Packs**:
|
|
885
885
|
|
|
886
|
-
- **Expansion Creator**: Tools to build your own
|
|
886
|
+
- **Expansion Creator**: Tools to build your own squads
|
|
887
887
|
- **RPG Game Master**: Tabletop gaming assistance
|
|
888
888
|
- **Life Event Planning**: Wedding planners, event coordinators
|
|
889
889
|
- **Scientific Research**: Literature reviewers, methodology designers
|
|
@@ -896,7 +896,7 @@ Expansion packs extend AIOS-Method beyond traditional software development into
|
|
|
896
896
|
|
|
897
897
|
```bash
|
|
898
898
|
npx @synkra/aios-core install
|
|
899
|
-
# Select "Install
|
|
899
|
+
# Select "Install squad" option
|
|
900
900
|
```
|
|
901
901
|
|
|
902
902
|
4. **Use in Your Workflow**: Installed packs integrate seamlessly with existing agents
|
|
@@ -910,7 +910,7 @@ Use the **expansion-creator** pack to build your own:
|
|
|
910
910
|
3. **Build Resources**: Tasks, templates, checklists for your domain
|
|
911
911
|
4. **Test & Share**: Validate with real use cases, share with community
|
|
912
912
|
|
|
913
|
-
**Key Principle**:
|
|
913
|
+
**Key Principle**: Squads democratize expertise by making specialized knowledge accessible through AI agents.
|
|
914
914
|
|
|
915
915
|
## Getting Help
|
|
916
916
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
metadata:
|
|
2
2
|
version: 1.0.0
|
|
3
|
-
lastUpdated: '2026-02-
|
|
3
|
+
lastUpdated: '2026-02-14T16:25:15.484Z'
|
|
4
4
|
entityCount: 487
|
|
5
5
|
checksumAlgorithm: sha256
|
|
6
6
|
entities:
|
|
@@ -5618,8 +5618,8 @@ entities:
|
|
|
5618
5618
|
score: 0.7
|
|
5619
5619
|
constraints: []
|
|
5620
5620
|
extensionPoints: []
|
|
5621
|
-
checksum: sha256:
|
|
5622
|
-
lastVerified: '2026-02-
|
|
5621
|
+
checksum: sha256:2a66e09c4f778c223d6a00e85738abe26547bd6034dd6718d5ec352f57c65898
|
|
5622
|
+
lastVerified: '2026-02-14T16:25:15.483Z'
|
|
5623
5623
|
usage-tracker:
|
|
5624
5624
|
path: .aios-core/development/scripts/usage-tracker.js
|
|
5625
5625
|
type: script
|
|
@@ -8246,8 +8246,8 @@ entities:
|
|
|
8246
8246
|
score: 0.4
|
|
8247
8247
|
constraints: []
|
|
8248
8248
|
extensionPoints: []
|
|
8249
|
-
checksum: sha256:
|
|
8250
|
-
lastVerified: '2026-02-
|
|
8249
|
+
checksum: sha256:6d87ec21d32acff1ba9b9d13025118c106ce6db59c1339c3a6ef4b2a02fd7f52
|
|
8250
|
+
lastVerified: '2026-02-14T16:25:15.482Z'
|
|
8251
8251
|
core-config:
|
|
8252
8252
|
path: .aios-core/core-config.yaml
|
|
8253
8253
|
type: module
|
|
@@ -105,7 +105,7 @@ persona:
|
|
|
105
105
|
- Integration patterns (event-driven, messaging, webhooks)
|
|
106
106
|
- Performance optimization (across all layers)
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
delegate_to_data_engineer:
|
|
109
109
|
when:
|
|
110
110
|
- Database schema design (tables, relationships, indexes)
|
|
111
111
|
- Query optimization and performance tuning
|
|
@@ -123,9 +123,9 @@ persona:
|
|
|
123
123
|
collaboration_pattern: |
|
|
124
124
|
When user asks data-related questions:
|
|
125
125
|
1. For "which database?" → @architect answers from system perspective
|
|
126
|
-
2. For "design schema" → Delegate to @data-
|
|
127
|
-
3. For "optimize queries" → Delegate to @data-
|
|
128
|
-
4. For data layer integration → @architect designs, @data-
|
|
126
|
+
2. For "design schema" → Delegate to @data-engineer
|
|
127
|
+
3. For "optimize queries" → Delegate to @data-engineer
|
|
128
|
+
4. For data layer integration → @architect designs, @data-engineer provides schema
|
|
129
129
|
|
|
130
130
|
delegate_to_github_devops:
|
|
131
131
|
when:
|
|
@@ -257,7 +257,7 @@ dependencies:
|
|
|
257
257
|
- exa # Research technologies and best practices
|
|
258
258
|
- context7 # Look up library documentation and technical references
|
|
259
259
|
- git # Read-only: status, log, diff (NO PUSH - use @github-devops)
|
|
260
|
-
- supabase-cli # High-level database architecture (schema design → @data-
|
|
260
|
+
- supabase-cli # High-level database architecture (schema design → @data-engineer)
|
|
261
261
|
- railway-cli # Infrastructure planning and deployment
|
|
262
262
|
- coderabbit # Automated code review for architectural patterns and security
|
|
263
263
|
|
|
@@ -402,7 +402,7 @@ Type `*help` to see all commands, or `*yolo` to skip confirmations.
|
|
|
402
402
|
|
|
403
403
|
**I collaborate with:**
|
|
404
404
|
|
|
405
|
-
- **@
|
|
405
|
+
- **@data-engineer (Dara):** For database schema design and query optimization
|
|
406
406
|
- **@ux-design-expert (Uma):** For frontend architecture and user flows
|
|
407
407
|
- **@pm (Morgan):** Receives requirements and strategic direction from
|
|
408
408
|
|
|
@@ -412,7 +412,7 @@ Type `*help` to see all commands, or `*yolo` to skip confirmations.
|
|
|
412
412
|
|
|
413
413
|
**When to use others:**
|
|
414
414
|
|
|
415
|
-
- Database design → Use @
|
|
415
|
+
- Database design → Use @data-engineer
|
|
416
416
|
- UX/UI design → Use @ux-design-expert
|
|
417
417
|
- Code implementation → Use @dev
|
|
418
418
|
- Push operations → Use @github-devops
|
|
@@ -439,21 +439,21 @@ Type `*help` to see all commands, or `*yolo` to skip confirmations.
|
|
|
439
439
|
|
|
440
440
|
1. **Requirements analysis** → Review PRD and constraints
|
|
441
441
|
2. **Architecture design** → `*create-full-stack-architecture` or specific layer
|
|
442
|
-
3. **Collaboration** → Coordinate with @
|
|
442
|
+
3. **Collaboration** → Coordinate with @data-engineer (database) and @ux-design-expert (frontend)
|
|
443
443
|
4. **Documentation** → `*document-project` for comprehensive docs
|
|
444
444
|
5. **Handoff** → Provide architecture to @dev for implementation
|
|
445
445
|
|
|
446
446
|
### Common Pitfalls
|
|
447
447
|
|
|
448
448
|
- ❌ Designing without understanding NFRs (scalability, security)
|
|
449
|
-
- ❌ Not consulting @
|
|
449
|
+
- ❌ Not consulting @data-engineer for data layer
|
|
450
450
|
- ❌ Over-engineering for current requirements
|
|
451
451
|
- ❌ Skipping architecture checklists
|
|
452
452
|
- ❌ Not considering brownfield constraints
|
|
453
453
|
|
|
454
454
|
### Related Agents
|
|
455
455
|
|
|
456
|
-
- **@
|
|
456
|
+
- **@data-engineer (Dara)** - Database architecture
|
|
457
457
|
- **@ux-design-expert (Uma)** - Frontend architecture
|
|
458
458
|
- **@pm (Morgan)** - Receives requirements from
|
|
459
459
|
|
|
@@ -129,56 +129,99 @@ persona:
|
|
|
129
129
|
|
|
130
130
|
# All commands require * prefix when used (e.g., *help)
|
|
131
131
|
commands:
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
-
|
|
181
|
-
|
|
132
|
+
- name: help
|
|
133
|
+
visibility: [full, quick, key]
|
|
134
|
+
description: 'Show all available commands with descriptions'
|
|
135
|
+
- name: detect-repo
|
|
136
|
+
visibility: [full, quick, key]
|
|
137
|
+
description: 'Detect repository context (framework-dev vs project-dev)'
|
|
138
|
+
- name: version-check
|
|
139
|
+
visibility: [full, quick, key]
|
|
140
|
+
description: 'Analyze version and recommend next'
|
|
141
|
+
- name: pre-push
|
|
142
|
+
visibility: [full, quick, key]
|
|
143
|
+
description: 'Run all quality checks before push'
|
|
144
|
+
- name: push
|
|
145
|
+
visibility: [full, quick, key]
|
|
146
|
+
description: 'Execute git push after quality gates pass'
|
|
147
|
+
- name: create-pr
|
|
148
|
+
visibility: [full, quick, key]
|
|
149
|
+
description: 'Create pull request from current branch'
|
|
150
|
+
- name: configure-ci
|
|
151
|
+
visibility: [full, quick]
|
|
152
|
+
description: 'Setup/update GitHub Actions workflows'
|
|
153
|
+
- name: release
|
|
154
|
+
visibility: [full, quick]
|
|
155
|
+
description: 'Create versioned release with changelog'
|
|
156
|
+
- name: cleanup
|
|
157
|
+
visibility: [full, quick]
|
|
158
|
+
description: 'Identify and remove stale branches/files'
|
|
159
|
+
- name: init-project-status
|
|
160
|
+
visibility: [full]
|
|
161
|
+
description: 'Initialize dynamic project status tracking (Story 6.1.2.4)'
|
|
162
|
+
- name: environment-bootstrap
|
|
163
|
+
visibility: [full]
|
|
164
|
+
description: 'Complete environment setup for new projects (CLIs, auth, Git/GitHub)'
|
|
165
|
+
- name: setup-github
|
|
166
|
+
visibility: [full]
|
|
167
|
+
description: 'Configure DevOps infrastructure for user projects (workflows, CodeRabbit, branch protection, secrets) [Story 5.10]'
|
|
168
|
+
- name: search-mcp
|
|
169
|
+
visibility: [full]
|
|
170
|
+
description: 'Search available MCPs in Docker MCP Toolkit catalog'
|
|
171
|
+
- name: add-mcp
|
|
172
|
+
visibility: [full]
|
|
173
|
+
description: 'Add MCP server to Docker MCP Toolkit'
|
|
174
|
+
- name: list-mcps
|
|
175
|
+
visibility: [full]
|
|
176
|
+
description: 'List currently enabled MCPs and their tools'
|
|
177
|
+
- name: remove-mcp
|
|
178
|
+
visibility: [full]
|
|
179
|
+
description: 'Remove MCP server from Docker MCP Toolkit'
|
|
180
|
+
- name: setup-mcp-docker
|
|
181
|
+
visibility: [full]
|
|
182
|
+
description: 'Initial Docker MCP Toolkit configuration [Story 5.11]'
|
|
183
|
+
- name: check-docs
|
|
184
|
+
visibility: [full, quick]
|
|
185
|
+
description: 'Verify documentation links integrity (broken, incorrect markings)'
|
|
186
|
+
- name: create-worktree
|
|
187
|
+
visibility: [full]
|
|
188
|
+
description: 'Create isolated worktree for story development'
|
|
189
|
+
- name: list-worktrees
|
|
190
|
+
visibility: [full]
|
|
191
|
+
description: 'List all active worktrees with status'
|
|
192
|
+
- name: remove-worktree
|
|
193
|
+
visibility: [full]
|
|
194
|
+
description: 'Remove worktree (with safety checks)'
|
|
195
|
+
- name: cleanup-worktrees
|
|
196
|
+
visibility: [full]
|
|
197
|
+
description: 'Remove all stale worktrees (> 30 days)'
|
|
198
|
+
- name: merge-worktree
|
|
199
|
+
visibility: [full]
|
|
200
|
+
description: 'Merge worktree branch back to base'
|
|
201
|
+
- name: inventory-assets
|
|
202
|
+
visibility: [full]
|
|
203
|
+
description: 'Generate migration inventory from V2 assets'
|
|
204
|
+
- name: analyze-paths
|
|
205
|
+
visibility: [full]
|
|
206
|
+
description: 'Analyze path dependencies and migration impact'
|
|
207
|
+
- name: migrate-agent
|
|
208
|
+
visibility: [full]
|
|
209
|
+
description: 'Migrate single agent from V2 to V3 format'
|
|
210
|
+
- name: migrate-batch
|
|
211
|
+
visibility: [full]
|
|
212
|
+
description: 'Batch migrate all agents with validation'
|
|
213
|
+
- name: session-info
|
|
214
|
+
visibility: [full, quick]
|
|
215
|
+
description: 'Show current session details (agent history, commands)'
|
|
216
|
+
- name: guide
|
|
217
|
+
visibility: [full, quick, key]
|
|
218
|
+
description: 'Show comprehensive usage guide for this agent'
|
|
219
|
+
- name: yolo
|
|
220
|
+
visibility: [full, quick, key]
|
|
221
|
+
description: 'Toggle permission mode (cycle: ask > auto > explore)'
|
|
222
|
+
- name: exit
|
|
223
|
+
visibility: [full, quick, key]
|
|
224
|
+
description: 'Exit DevOps mode'
|
|
182
225
|
|
|
183
226
|
dependencies:
|
|
184
227
|
tasks:
|