aios-core 3.6.0 → 3.8.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/core/session/context-detector.js +3 -0
- package/.aios-core/core/session/context-loader.js +154 -0
- package/.aios-core/data/learned-patterns.yaml +3 -0
- package/.aios-core/data/workflow-patterns.yaml +347 -3
- package/.aios-core/development/agents/dev.md +13 -0
- package/.aios-core/development/agents/squad-creator.md +30 -0
- package/.aios-core/development/scripts/squad/squad-analyzer.js +638 -0
- package/.aios-core/development/scripts/squad/squad-extender.js +871 -0
- package/.aios-core/development/scripts/squad/squad-generator.js +107 -19
- package/.aios-core/development/scripts/squad/squad-migrator.js +3 -5
- package/.aios-core/development/scripts/squad/squad-validator.js +98 -0
- package/.aios-core/development/tasks/create-service.md +391 -0
- package/.aios-core/development/tasks/next.md +294 -0
- package/.aios-core/development/tasks/patterns.md +334 -0
- package/.aios-core/development/tasks/squad-creator-analyze.md +315 -0
- package/.aios-core/development/tasks/squad-creator-create.md +26 -3
- package/.aios-core/development/tasks/squad-creator-extend.md +411 -0
- package/.aios-core/development/tasks/squad-creator-validate.md +9 -1
- package/.aios-core/development/tasks/waves.md +205 -0
- package/.aios-core/development/templates/service-template/README.md.hbs +158 -0
- package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -0
- package/.aios-core/development/templates/service-template/client.ts.hbs +403 -0
- package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -0
- package/.aios-core/development/templates/service-template/index.ts.hbs +120 -0
- package/.aios-core/development/templates/service-template/jest.config.js +89 -0
- package/.aios-core/development/templates/service-template/package.json.hbs +87 -0
- package/.aios-core/development/templates/service-template/tsconfig.json +45 -0
- package/.aios-core/development/templates/service-template/types.ts.hbs +145 -0
- package/.aios-core/development/templates/squad/agent-template.md +69 -0
- package/.aios-core/development/templates/squad/checklist-template.md +82 -0
- package/.aios-core/development/templates/squad/data-template.yaml +105 -0
- package/.aios-core/development/templates/squad/script-template.js +179 -0
- package/.aios-core/development/templates/squad/task-template.md +125 -0
- package/.aios-core/development/templates/squad/template-template.md +97 -0
- package/.aios-core/development/templates/squad/tool-template.js +103 -0
- package/.aios-core/development/templates/squad/workflow-template.yaml +108 -0
- package/.aios-core/infrastructure/scripts/ide-sync/agent-parser.js +45 -1
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/antigravity.js +6 -6
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/cursor.js +5 -4
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/trae.js +3 -3
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/windsurf.js +3 -3
- package/.aios-core/install-manifest.yaml +139 -35
- package/.aios-core/quality/metrics-collector.js +27 -0
- package/.aios-core/scripts/session-context-loader.js +13 -254
- package/.aios-core/utils/aios-validator.js +25 -0
- package/.aios-core/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
- package/.aios-core/workflow-intelligence/__tests__/integration.test.js +337 -0
- package/.aios-core/workflow-intelligence/__tests__/suggestion-engine.test.js +431 -0
- package/.aios-core/workflow-intelligence/__tests__/wave-analyzer.test.js +458 -0
- package/.aios-core/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
- package/.aios-core/workflow-intelligence/engine/confidence-scorer.js +305 -0
- package/.aios-core/workflow-intelligence/engine/output-formatter.js +285 -0
- package/.aios-core/workflow-intelligence/engine/suggestion-engine.js +603 -0
- package/.aios-core/workflow-intelligence/engine/wave-analyzer.js +676 -0
- package/.aios-core/workflow-intelligence/index.js +327 -0
- package/.aios-core/workflow-intelligence/learning/capture-hook.js +147 -0
- package/.aios-core/workflow-intelligence/learning/index.js +230 -0
- package/.aios-core/workflow-intelligence/learning/pattern-capture.js +340 -0
- package/.aios-core/workflow-intelligence/learning/pattern-store.js +498 -0
- package/.aios-core/workflow-intelligence/learning/pattern-validator.js +309 -0
- package/.aios-core/workflow-intelligence/registry/workflow-registry.js +358 -0
- package/package.json +1 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jest configuration for service testing.
|
|
3
|
+
* @type {import('jest').Config}
|
|
4
|
+
*/
|
|
5
|
+
module.exports = {
|
|
6
|
+
// Use ts-jest for TypeScript support
|
|
7
|
+
preset: 'ts-jest',
|
|
8
|
+
|
|
9
|
+
// Test environment
|
|
10
|
+
testEnvironment: 'node',
|
|
11
|
+
|
|
12
|
+
// Root directories for tests
|
|
13
|
+
roots: ['<rootDir>'],
|
|
14
|
+
|
|
15
|
+
// Test file patterns
|
|
16
|
+
testMatch: [
|
|
17
|
+
'**/__tests__/**/*.test.ts',
|
|
18
|
+
'**/__tests__/**/*.spec.ts',
|
|
19
|
+
],
|
|
20
|
+
|
|
21
|
+
// TypeScript transformation
|
|
22
|
+
transform: {
|
|
23
|
+
'^.+\\.tsx?$': [
|
|
24
|
+
'ts-jest',
|
|
25
|
+
{
|
|
26
|
+
useESM: true,
|
|
27
|
+
tsconfig: {
|
|
28
|
+
module: 'ESNext',
|
|
29
|
+
moduleResolution: 'NodeNext',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
// Module file extensions
|
|
36
|
+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
37
|
+
|
|
38
|
+
// Coverage configuration
|
|
39
|
+
collectCoverageFrom: [
|
|
40
|
+
'**/*.ts',
|
|
41
|
+
'!**/*.d.ts',
|
|
42
|
+
'!**/__tests__/**',
|
|
43
|
+
'!**/node_modules/**',
|
|
44
|
+
'!**/dist/**',
|
|
45
|
+
],
|
|
46
|
+
|
|
47
|
+
// Coverage thresholds (targeting >70%)
|
|
48
|
+
coverageThreshold: {
|
|
49
|
+
global: {
|
|
50
|
+
branches: 70,
|
|
51
|
+
functions: 70,
|
|
52
|
+
lines: 70,
|
|
53
|
+
statements: 70,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
// Coverage reporters
|
|
58
|
+
coverageReporters: ['text', 'text-summary', 'lcov', 'html'],
|
|
59
|
+
|
|
60
|
+
// Coverage output directory
|
|
61
|
+
coverageDirectory: 'coverage',
|
|
62
|
+
|
|
63
|
+
// Clear mocks between tests
|
|
64
|
+
clearMocks: true,
|
|
65
|
+
|
|
66
|
+
// Verbose output
|
|
67
|
+
verbose: true,
|
|
68
|
+
|
|
69
|
+
// Test timeout (30 seconds)
|
|
70
|
+
testTimeout: 30000,
|
|
71
|
+
|
|
72
|
+
// Setup files
|
|
73
|
+
// setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
|
|
74
|
+
|
|
75
|
+
// Module name mapper for path aliases
|
|
76
|
+
moduleNameMapper: {
|
|
77
|
+
'^@/(.*)$': '<rootDir>/$1',
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
// Ignore patterns
|
|
81
|
+
testPathIgnorePatterns: [
|
|
82
|
+
'/node_modules/',
|
|
83
|
+
'/dist/',
|
|
84
|
+
],
|
|
85
|
+
|
|
86
|
+
// Global setup/teardown
|
|
87
|
+
// globalSetup: '<rootDir>/jest.global-setup.ts',
|
|
88
|
+
// globalTeardown: '<rootDir>/jest.global-teardown.ts',
|
|
89
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aios/{{kebabCase serviceName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "{{description}}",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
},
|
|
14
|
+
"./types": {
|
|
15
|
+
"types": "./dist/types.d.ts",
|
|
16
|
+
"import": "./dist/types.js"
|
|
17
|
+
},
|
|
18
|
+
"./errors": {
|
|
19
|
+
"types": "./dist/errors.d.ts",
|
|
20
|
+
"import": "./dist/errors.js"
|
|
21
|
+
}{{#if isApiIntegration}},
|
|
22
|
+
"./client": {
|
|
23
|
+
"types": "./dist/client.d.ts",
|
|
24
|
+
"import": "./dist/client.js"
|
|
25
|
+
}{{/if}}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc",
|
|
33
|
+
"build:watch": "tsc --watch",
|
|
34
|
+
"clean": "rimraf dist coverage",
|
|
35
|
+
"test": "jest",
|
|
36
|
+
"test:watch": "jest --watch",
|
|
37
|
+
"test:coverage": "jest --coverage",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"lint": "eslint . --ext .ts",
|
|
40
|
+
"lint:fix": "eslint . --ext .ts --fix",
|
|
41
|
+
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"aios",
|
|
45
|
+
"{{kebabCase serviceName}}",
|
|
46
|
+
"service"{{#if isApiIntegration}},
|
|
47
|
+
"api",
|
|
48
|
+
"integration"{{/if}}
|
|
49
|
+
],
|
|
50
|
+
"author": "AIOS-FullStack",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/jest": "^29.5.12",
|
|
57
|
+
"@types/node": "^20.11.0",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
59
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
60
|
+
"eslint": "^8.56.0",
|
|
61
|
+
"jest": "^29.7.0",
|
|
62
|
+
"rimraf": "^5.0.5",
|
|
63
|
+
"ts-jest": "^29.1.2",
|
|
64
|
+
"typescript": "^5.3.3"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"typescript": ">=5.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"typescript": {
|
|
71
|
+
"optional": true
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"repository": {
|
|
75
|
+
"type": "git",
|
|
76
|
+
"url": "https://github.com/aios-fullstack/{{kebabCase serviceName}}.git"
|
|
77
|
+
},
|
|
78
|
+
"bugs": {
|
|
79
|
+
"url": "https://github.com/aios-fullstack/{{kebabCase serviceName}}/issues"
|
|
80
|
+
},
|
|
81
|
+
"homepage": "https://github.com/aios-fullstack/{{kebabCase serviceName}}#readme",
|
|
82
|
+
"aios": {
|
|
83
|
+
"storyId": "{{storyId}}",
|
|
84
|
+
"type": "{{#if isApiIntegration}}api-integration{{else}}utility-service{{/if}}",
|
|
85
|
+
"generatedAt": "{{generatedAt}}"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"lib": ["ES2020"],
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": "./",
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"declarationMap": true,
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"strict": true,
|
|
13
|
+
"noImplicitAny": true,
|
|
14
|
+
"strictNullChecks": true,
|
|
15
|
+
"strictFunctionTypes": true,
|
|
16
|
+
"strictBindCallApply": true,
|
|
17
|
+
"strictPropertyInitialization": true,
|
|
18
|
+
"noImplicitThis": true,
|
|
19
|
+
"useUnknownInCatchVariables": true,
|
|
20
|
+
"alwaysStrict": true,
|
|
21
|
+
"noUnusedLocals": true,
|
|
22
|
+
"noUnusedParameters": true,
|
|
23
|
+
"exactOptionalPropertyTypes": false,
|
|
24
|
+
"noImplicitReturns": true,
|
|
25
|
+
"noFallthroughCasesInSwitch": true,
|
|
26
|
+
"noUncheckedIndexedAccess": true,
|
|
27
|
+
"noImplicitOverride": true,
|
|
28
|
+
"noPropertyAccessFromIndexSignature": false,
|
|
29
|
+
"esModuleInterop": true,
|
|
30
|
+
"forceConsistentCasingInFileNames": true,
|
|
31
|
+
"skipLibCheck": true,
|
|
32
|
+
"resolveJsonModule": true,
|
|
33
|
+
"isolatedModules": true
|
|
34
|
+
},
|
|
35
|
+
"include": [
|
|
36
|
+
"./**/*.ts"
|
|
37
|
+
],
|
|
38
|
+
"exclude": [
|
|
39
|
+
"node_modules",
|
|
40
|
+
"dist",
|
|
41
|
+
"**/*.test.ts",
|
|
42
|
+
"**/*.spec.ts",
|
|
43
|
+
"__tests__"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for {{pascalCase serviceName}} service.
|
|
3
|
+
* @module @aios/{{kebabCase serviceName}}/types
|
|
4
|
+
* @story {{storyId}}
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Configuration options for the {{pascalCase serviceName}} service.
|
|
9
|
+
*/
|
|
10
|
+
export interface {{pascalCase serviceName}}Config {
|
|
11
|
+
{{#each envVars}}
|
|
12
|
+
/**
|
|
13
|
+
* {{this.description}}
|
|
14
|
+
{{#if this.required}}
|
|
15
|
+
* @required
|
|
16
|
+
{{/if}}
|
|
17
|
+
*/
|
|
18
|
+
{{camelCase this.name}}{{#unless this.required}}?{{/unless}}: string;
|
|
19
|
+
|
|
20
|
+
{{/each}}
|
|
21
|
+
{{#if isApiIntegration}}
|
|
22
|
+
/**
|
|
23
|
+
* Base URL for the API.
|
|
24
|
+
* @default '{{apiBaseUrl}}'
|
|
25
|
+
*/
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Request timeout in milliseconds.
|
|
30
|
+
* @default 30000
|
|
31
|
+
*/
|
|
32
|
+
timeout?: number;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Maximum number of retry attempts.
|
|
36
|
+
* @default 3
|
|
37
|
+
*/
|
|
38
|
+
maxRetries?: number;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Enable debug logging.
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
debug?: boolean;
|
|
45
|
+
|
|
46
|
+
{{/if}}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The {{pascalCase serviceName}} service interface.
|
|
51
|
+
*/
|
|
52
|
+
export interface {{pascalCase serviceName}}Service {
|
|
53
|
+
/**
|
|
54
|
+
* Execute the primary service operation.
|
|
55
|
+
*/
|
|
56
|
+
execute(): Promise<void>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get the current configuration (without sensitive values).
|
|
60
|
+
*/
|
|
61
|
+
getConfig(): Partial<{{pascalCase serviceName}}Config>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Check if the service is properly configured and operational.
|
|
65
|
+
*/
|
|
66
|
+
healthCheck(): Promise<boolean>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
{{#if isApiIntegration}}
|
|
70
|
+
/**
|
|
71
|
+
* Base API response structure.
|
|
72
|
+
*/
|
|
73
|
+
export interface {{pascalCase serviceName}}ApiResponse<T = unknown> {
|
|
74
|
+
success: boolean;
|
|
75
|
+
data?: T;
|
|
76
|
+
error?: {
|
|
77
|
+
code: string;
|
|
78
|
+
message: string;
|
|
79
|
+
details?: Record<string, unknown>;
|
|
80
|
+
};
|
|
81
|
+
meta?: {
|
|
82
|
+
requestId?: string;
|
|
83
|
+
rateLimit?: {
|
|
84
|
+
remaining: number;
|
|
85
|
+
reset: number;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Request options for API calls.
|
|
92
|
+
*/
|
|
93
|
+
export interface {{pascalCase serviceName}}RequestOptions {
|
|
94
|
+
/**
|
|
95
|
+
* HTTP method.
|
|
96
|
+
*/
|
|
97
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Request headers.
|
|
101
|
+
*/
|
|
102
|
+
headers?: Record<string, string>;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Request body.
|
|
106
|
+
*/
|
|
107
|
+
body?: unknown;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Query parameters.
|
|
111
|
+
*/
|
|
112
|
+
params?: Record<string, string | number | boolean>;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Request timeout override.
|
|
116
|
+
*/
|
|
117
|
+
timeout?: number;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Skip retry on failure.
|
|
121
|
+
*/
|
|
122
|
+
noRetry?: boolean;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Rate limit information.
|
|
127
|
+
*/
|
|
128
|
+
export interface {{pascalCase serviceName}}RateLimit {
|
|
129
|
+
/**
|
|
130
|
+
* Maximum requests allowed.
|
|
131
|
+
*/
|
|
132
|
+
limit: number;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Remaining requests in current window.
|
|
136
|
+
*/
|
|
137
|
+
remaining: number;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Unix timestamp when the rate limit resets.
|
|
141
|
+
*/
|
|
142
|
+
reset: number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
{{/if}}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# {{COMPONENTNAME}}
|
|
2
|
+
|
|
3
|
+
> Agent definition for {{SQUADNAME}} squad
|
|
4
|
+
> Created: {{CREATEDAT}}
|
|
5
|
+
{{#IF STORYID}}
|
|
6
|
+
> Story: {{STORYID}}
|
|
7
|
+
{{/IF}}
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
{{DESCRIPTION}}
|
|
12
|
+
|
|
13
|
+
## Configuration
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
agent:
|
|
17
|
+
name: {{COMPONENTNAME}}
|
|
18
|
+
id: {{COMPONENTNAME}}
|
|
19
|
+
title: "{{COMPONENTNAME}} Agent"
|
|
20
|
+
icon: "{{ICON}}"
|
|
21
|
+
whenToUse: "Use this agent when {{USECASE}}"
|
|
22
|
+
|
|
23
|
+
persona:
|
|
24
|
+
role: "Describe the agent's primary role and responsibilities"
|
|
25
|
+
style: "Communication style (e.g., systematic, empathetic, analytical)"
|
|
26
|
+
identity: "What makes this agent unique"
|
|
27
|
+
focus: "Primary focus areas"
|
|
28
|
+
|
|
29
|
+
core_principles:
|
|
30
|
+
- "Principle 1: Define the first guiding principle"
|
|
31
|
+
- "Principle 2: Define the second guiding principle"
|
|
32
|
+
- "Principle 3: Define the third guiding principle"
|
|
33
|
+
|
|
34
|
+
commands:
|
|
35
|
+
- name: help
|
|
36
|
+
visibility: [full, quick, key]
|
|
37
|
+
description: "Show all available commands"
|
|
38
|
+
- name: command-1
|
|
39
|
+
visibility: [full, quick]
|
|
40
|
+
description: "Description of command 1"
|
|
41
|
+
- name: exit
|
|
42
|
+
visibility: [full, quick, key]
|
|
43
|
+
description: "Exit agent mode"
|
|
44
|
+
|
|
45
|
+
dependencies:
|
|
46
|
+
tasks: []
|
|
47
|
+
templates: []
|
|
48
|
+
checklists: []
|
|
49
|
+
tools: []
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Commands
|
|
53
|
+
|
|
54
|
+
| Command | Description |
|
|
55
|
+
|---------|-------------|
|
|
56
|
+
| `*help` | Show available commands |
|
|
57
|
+
| `*exit` | Exit agent mode |
|
|
58
|
+
|
|
59
|
+
## Collaboration
|
|
60
|
+
|
|
61
|
+
**Works with:**
|
|
62
|
+
- List other agents this agent collaborates with
|
|
63
|
+
|
|
64
|
+
**Handoff points:**
|
|
65
|
+
- When to hand off to other agents
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
*Agent created by squad-creator*
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# {{COMPONENTNAME}} Checklist
|
|
2
|
+
|
|
3
|
+
> {{DESCRIPTION}}
|
|
4
|
+
> Squad: {{SQUADNAME}}
|
|
5
|
+
> Created: {{CREATEDAT}}
|
|
6
|
+
{{#IF STORYID}}
|
|
7
|
+
> Story: {{STORYID}}
|
|
8
|
+
{{/IF}}
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Pre-Conditions
|
|
13
|
+
|
|
14
|
+
Before starting, verify:
|
|
15
|
+
|
|
16
|
+
- [ ] Pre-condition 1
|
|
17
|
+
- [ ] Pre-condition 2
|
|
18
|
+
- [ ] Pre-condition 3
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Checklist Items
|
|
23
|
+
|
|
24
|
+
### Category 1: Setup
|
|
25
|
+
|
|
26
|
+
| # | Item | Status | Notes |
|
|
27
|
+
|---|------|--------|-------|
|
|
28
|
+
| 1.1 | Item description | [ ] | |
|
|
29
|
+
| 1.2 | Item description | [ ] | |
|
|
30
|
+
| 1.3 | Item description | [ ] | |
|
|
31
|
+
|
|
32
|
+
### Category 2: Implementation
|
|
33
|
+
|
|
34
|
+
| # | Item | Status | Notes |
|
|
35
|
+
|---|------|--------|-------|
|
|
36
|
+
| 2.1 | Item description | [ ] | |
|
|
37
|
+
| 2.2 | Item description | [ ] | |
|
|
38
|
+
| 2.3 | Item description | [ ] | |
|
|
39
|
+
|
|
40
|
+
### Category 3: Validation
|
|
41
|
+
|
|
42
|
+
| # | Item | Status | Notes |
|
|
43
|
+
|---|------|--------|-------|
|
|
44
|
+
| 3.1 | Item description | [ ] | |
|
|
45
|
+
| 3.2 | Item description | [ ] | |
|
|
46
|
+
| 3.3 | Item description | [ ] | |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Post-Conditions
|
|
51
|
+
|
|
52
|
+
After completion, verify:
|
|
53
|
+
|
|
54
|
+
- [ ] Post-condition 1
|
|
55
|
+
- [ ] Post-condition 2
|
|
56
|
+
- [ ] Post-condition 3
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Sign-off
|
|
61
|
+
|
|
62
|
+
| Role | Name | Date | Signature |
|
|
63
|
+
|------|------|------|-----------|
|
|
64
|
+
| Creator | | | |
|
|
65
|
+
| Reviewer | | | |
|
|
66
|
+
| Approver | | | |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Usage
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Use this checklist with:
|
|
74
|
+
*checklist {{COMPONENTNAME}}
|
|
75
|
+
|
|
76
|
+
# Or reference in tasks:
|
|
77
|
+
checklist: {{COMPONENTNAME}}.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
*Checklist created by squad-creator*
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# {{COMPONENTNAME}} Data
|
|
2
|
+
#
|
|
3
|
+
# {{DESCRIPTION}}
|
|
4
|
+
#
|
|
5
|
+
# Squad: {{SQUADNAME}}
|
|
6
|
+
# Created: {{CREATEDAT}}
|
|
7
|
+
# Story: {{STORYID}}
|
|
8
|
+
|
|
9
|
+
name: {{COMPONENTNAME}}
|
|
10
|
+
version: 1.0.0
|
|
11
|
+
description: {{DESCRIPTION}}
|
|
12
|
+
|
|
13
|
+
# Metadata
|
|
14
|
+
metadata:
|
|
15
|
+
created: {{CREATEDAT}}
|
|
16
|
+
author: squad-creator
|
|
17
|
+
squad: {{SQUADNAME}}
|
|
18
|
+
tags:
|
|
19
|
+
- data
|
|
20
|
+
- {{SQUADNAME}}
|
|
21
|
+
|
|
22
|
+
# Data schema definition
|
|
23
|
+
schema:
|
|
24
|
+
type: object
|
|
25
|
+
required:
|
|
26
|
+
- id
|
|
27
|
+
- name
|
|
28
|
+
properties:
|
|
29
|
+
id:
|
|
30
|
+
type: string
|
|
31
|
+
description: "Unique identifier"
|
|
32
|
+
pattern: "^[a-z][a-z0-9-]*$"
|
|
33
|
+
name:
|
|
34
|
+
type: string
|
|
35
|
+
description: "Display name"
|
|
36
|
+
minLength: 1
|
|
37
|
+
maxLength: 100
|
|
38
|
+
description:
|
|
39
|
+
type: string
|
|
40
|
+
description: "Optional description"
|
|
41
|
+
enabled:
|
|
42
|
+
type: boolean
|
|
43
|
+
description: "Whether this entry is enabled"
|
|
44
|
+
default: true
|
|
45
|
+
priority:
|
|
46
|
+
type: integer
|
|
47
|
+
description: "Priority level (1-10)"
|
|
48
|
+
minimum: 1
|
|
49
|
+
maximum: 10
|
|
50
|
+
default: 5
|
|
51
|
+
metadata:
|
|
52
|
+
type: object
|
|
53
|
+
description: "Additional metadata"
|
|
54
|
+
additionalProperties: true
|
|
55
|
+
|
|
56
|
+
# Default values for new entries
|
|
57
|
+
defaults:
|
|
58
|
+
enabled: true
|
|
59
|
+
priority: 5
|
|
60
|
+
metadata: {}
|
|
61
|
+
|
|
62
|
+
# Validation rules
|
|
63
|
+
validation:
|
|
64
|
+
- rule: "id must be unique"
|
|
65
|
+
check: "unique(entries.id)"
|
|
66
|
+
- rule: "name must not be empty"
|
|
67
|
+
check: "length(name) > 0"
|
|
68
|
+
|
|
69
|
+
# Data entries
|
|
70
|
+
entries:
|
|
71
|
+
- id: example-1
|
|
72
|
+
name: "Example Entry 1"
|
|
73
|
+
description: "This is an example entry"
|
|
74
|
+
enabled: true
|
|
75
|
+
priority: 5
|
|
76
|
+
metadata:
|
|
77
|
+
category: example
|
|
78
|
+
|
|
79
|
+
- id: example-2
|
|
80
|
+
name: "Example Entry 2"
|
|
81
|
+
description: "Another example entry"
|
|
82
|
+
enabled: true
|
|
83
|
+
priority: 3
|
|
84
|
+
metadata:
|
|
85
|
+
category: example
|
|
86
|
+
|
|
87
|
+
# Usage examples
|
|
88
|
+
usage:
|
|
89
|
+
load: |
|
|
90
|
+
const yaml = require('js-yaml');
|
|
91
|
+
const fs = require('fs');
|
|
92
|
+
const data = yaml.load(fs.readFileSync('{{COMPONENTNAME}}.yaml', 'utf8'));
|
|
93
|
+
console.log(data.entries);
|
|
94
|
+
|
|
95
|
+
query: |
|
|
96
|
+
const activeEntries = data.entries.filter(e => e.enabled);
|
|
97
|
+
const highPriority = data.entries.filter(e => e.priority >= 7);
|
|
98
|
+
|
|
99
|
+
add_entry: |
|
|
100
|
+
data.entries.push({
|
|
101
|
+
id: 'new-entry',
|
|
102
|
+
name: 'New Entry',
|
|
103
|
+
enabled: true,
|
|
104
|
+
priority: 5,
|
|
105
|
+
});
|