@wipal/agent-team 1.0.3 → 1.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/.claude/commands/skills/discover.md +127 -0
- package/.claude/commands/skills/install.md +225 -0
- package/.claude/commands/skills/review.md +234 -0
- package/.claude/commands/utils/learn.md +142 -0
- package/.claude/commands/utils/retrospect.md +62 -0
- package/.claude/commands/utils/switch.md +113 -0
- package/.claude/commands/utils/sync.md +183 -0
- package/.claude/rules/common/general-rules.md +6 -0
- package/.claude/rules/role-rules/dev-be-rules.md +241 -0
- package/.claude/rules/role-rules/dev-fe-rules.md +76 -0
- package/.claude/skills/SKILL-INDEX.md +24 -5
- package/.claude/skills/core/knowledge-graph/SKILL.md +214 -0
- package/.claude/skills/core/sequential-thinking/SKILL.md +112 -0
- package/.claude/skills/core/sequential-thinking/references/advanced.md +122 -0
- package/.claude/skills/core/sequential-thinking/references/examples.md +274 -0
- package/.claude/skills/domain/architecture/c4-architecture/SKILL.md +314 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/advanced-patterns.md +552 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/c4-syntax.md +492 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/common-mistakes.md +437 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/SKILL.md +238 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/advanced-features.md +556 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/architecture-diagrams.md +192 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/c4-diagrams.md +410 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/class-diagrams.md +361 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/erd-diagrams.md +510 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/flowcharts.md +450 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/sequence-diagrams.md +394 -0
- package/.claude/skills/domain/backend/testing-be/SKILL.md +121 -17
- package/.claude/skills/domain/design/design-system/SKILL.md +169 -0
- package/.claude/skills/domain/design/html-css-output/SKILL.md +253 -0
- package/.claude/skills/domain/design/mockup-creation/SKILL.md +230 -0
- package/.claude/skills/domain/design/responsive-design/SKILL.md +207 -0
- package/.claude/skills/domain/design/ui-design/SKILL.md +124 -0
- package/.claude/skills/domain/frontend/testing-fe/SKILL.md +143 -38
- package/.claude/skills/domain/frontend/ui-ux-pro-max/README.md +45 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/SKILL.md +404 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/charts.csv +26 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/colors.csv +97 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/icons.csv +101 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/landing.csv +31 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/products.csv +97 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/styles.csv +68 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/typography.csv +58 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/core.py +253 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/search.py +114 -0
- package/.claude/skills/domain/product/requirements-clarity/SKILL.md +340 -0
- package/.claude/skills/skills-registry.yaml +103 -8
- package/README.md +107 -33
- package/README.npm.md +252 -0
- package/TUTORIAL.md +256 -0
- package/bin/agent-team.js +26 -7
- package/config/roles.yaml +107 -0
- package/docs/01-architecture.md +699 -0
- package/docs/02-setup-guide.md +634 -0
- package/docs/03-skills-guide.md +628 -0
- package/docs/04-workflows.md +792 -0
- package/docs/05-model-strategy.md +550 -0
- package/docs/06-extend-guide.md +1226 -0
- package/docs/07-quick-reference.md +578 -0
- package/docs/08-skills-discovery.md +342 -0
- package/docs/README.md +134 -0
- package/docs/rqm.md +560 -0
- package/package.json +10 -4
- package/scripts/postinstall.js +46 -0
- package/src/commands/add.js +131 -67
- package/src/commands/init.js +419 -9
- package/src/commands/list.js +20 -16
- package/src/commands/projects.js +127 -0
- package/src/commands/setup-hooks.js +261 -0
- package/src/index.js +0 -1
- package/src/utils/file-utils.js +147 -50
- package/src/utils/global-registry.js +224 -0
- package/templates/CLAUDE.md.tmpl +128 -20
- package/templates/MEMORY.md.tmpl +119 -0
- package/templates/agent.md.tmpl +205 -0
- package/templates/code/nestjs-controller.ts.tmpl +49 -0
- package/templates/code/nestjs-dto.ts.tmpl +63 -0
- package/templates/code/nestjs-service.ts.tmpl +45 -0
- package/templates/code/react-component.tsx.tmpl +24 -0
- package/templates/code/react-hook.ts.tmpl +54 -0
- package/templates/code/test.spec.ts.tmpl +50 -0
- package/templates/code/vue-component.vue.tmpl +49 -0
- package/templates/code/vue-composable.ts.tmpl +54 -0
- package/templates/knowledge.md.tmpl +152 -17
- package/templates/meeting-notes.md.tmpl +110 -0
- package/templates/memory/hooks.memory.json +50 -0
- package/templates/memory/settings.memory.json +16 -0
- package/templates/reports/bug-report.md.tmpl +164 -0
- package/templates/reports/code-review.md.tmpl +201 -0
- package/templates/reports/sprint-report.md.tmpl +218 -0
- package/templates/roles/ba.md +53 -0
- package/templates/roles/designer.md +82 -0
- package/templates/roles/dev-be.md +49 -0
- package/templates/roles/dev-fe.md +49 -0
- package/templates/roles/devops.md +53 -0
- package/templates/roles/pm.md +49 -0
- package/templates/roles/qa.md +53 -0
- package/templates/roles/sa.md +49 -0
- package/templates/roles/tech-lead.md +132 -0
- package/templates/skills/memory/memory-status.md +78 -0
- package/templates/skills/memory/recall.md +160 -0
- package/templates/skills/memory/reflect.md +168 -0
- package/templates/skills/memory/remember.md +105 -0
- package/templates/tasks/lessons.md.tmpl +77 -0
- package/templates/tasks/todo.md.tmpl +53 -0
- package/src/commands/switch.js +0 -53
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Controller,
|
|
3
|
+
Get,
|
|
4
|
+
Post,
|
|
5
|
+
Put,
|
|
6
|
+
Delete,
|
|
7
|
+
Body,
|
|
8
|
+
Param,
|
|
9
|
+
Query,
|
|
10
|
+
HttpCode,
|
|
11
|
+
HttpStatus,
|
|
12
|
+
} from '@nestjs/common';
|
|
13
|
+
import { {{ServiceName}}Service } from './{{service-name}}.service';
|
|
14
|
+
import { Create{{ResourceName}}Dto, Update{{ResourceName}}Dto, Query{{ResourceName}}Dto } from './dtos';
|
|
15
|
+
|
|
16
|
+
@Controller('{{resource-name}}')
|
|
17
|
+
export class {{ServiceName}}Controller {
|
|
18
|
+
constructor(private readonly {{serviceName}}Service: {{ServiceName}}Service) {}
|
|
19
|
+
|
|
20
|
+
@Get()
|
|
21
|
+
async findAll(@Query() query: Query{{ResourceName}}Dto) {
|
|
22
|
+
return this.{{serviceName}}Service.findAll(query);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Get(':id')
|
|
26
|
+
async findOne(@Param('id') id: string) {
|
|
27
|
+
return this.{{serviceName}}Service.findOne(id);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Post()
|
|
31
|
+
@HttpCode(HttpStatus.CREATED)
|
|
32
|
+
async create(@Body() createDto: Create{{ResourceName}}Dto) {
|
|
33
|
+
return this.{{serviceName}}Service.create(createDto);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@Put(':id')
|
|
37
|
+
async update(
|
|
38
|
+
@Param('id') id: string,
|
|
39
|
+
@Body() updateDto: Update{{ResourceName}}Dto,
|
|
40
|
+
) {
|
|
41
|
+
return this.{{serviceName}}Service.update(id, updateDto);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@Delete(':id')
|
|
45
|
+
@HttpCode(HttpStatus.NO_CONTENT)
|
|
46
|
+
async remove(@Param('id') id: string) {
|
|
47
|
+
return this.{{serviceName}}Service.remove(id);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { IsString, IsOptional, IsNumber, IsBoolean, IsDate, IsEmail, IsUrl, Min, Max, MinLength, MaxLength } from 'class-validator';
|
|
2
|
+
import { Type } from 'class-transformer';
|
|
3
|
+
import { ApiProperty, ApiPropertyOptional, PartialType, OmitType } from '@nestjs/swagger';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* DTO for creating a new {{ResourceName}}
|
|
7
|
+
*/
|
|
8
|
+
export class Create{{ResourceName}}Dto {
|
|
9
|
+
@ApiProperty({ description: 'Name of the {{resourceName}}' })
|
|
10
|
+
@IsString()
|
|
11
|
+
@MinLength(1)
|
|
12
|
+
@MaxLength(255)
|
|
13
|
+
name: string;
|
|
14
|
+
|
|
15
|
+
@ApiPropertyOptional({ description: 'Description' })
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsString()
|
|
18
|
+
@MaxLength(1000)
|
|
19
|
+
description?: string;
|
|
20
|
+
|
|
21
|
+
// TODO: Add additional fields as needed
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* DTO for updating an existing {{ResourceName}}
|
|
26
|
+
*/
|
|
27
|
+
export class Update{{ResourceName}}Dto extends PartialType(
|
|
28
|
+
OmitType(Create{{ResourceName}}Dto, ['name'] as const),
|
|
29
|
+
) {
|
|
30
|
+
@ApiPropertyOptional({ description: 'Name of the {{resourceName}}' })
|
|
31
|
+
@IsOptional()
|
|
32
|
+
@IsString()
|
|
33
|
+
@MinLength(1)
|
|
34
|
+
@MaxLength(255)
|
|
35
|
+
name?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* DTO for querying {{ResourceName}} list
|
|
40
|
+
*/
|
|
41
|
+
export class Query{{ResourceName}}Dto {
|
|
42
|
+
@ApiPropertyOptional({ default: 1, minimum: 1 })
|
|
43
|
+
@IsOptional()
|
|
44
|
+
@Type(() => Number)
|
|
45
|
+
@IsNumber()
|
|
46
|
+
@Min(1)
|
|
47
|
+
page?: number = 1;
|
|
48
|
+
|
|
49
|
+
@ApiPropertyOptional({ default: 10, minimum: 1, maximum: 100 })
|
|
50
|
+
@IsOptional()
|
|
51
|
+
@Type(() => Number)
|
|
52
|
+
@IsNumber()
|
|
53
|
+
@Min(1)
|
|
54
|
+
@Max(100)
|
|
55
|
+
limit?: number = 10;
|
|
56
|
+
|
|
57
|
+
@ApiPropertyOptional({ description: 'Search by name' })
|
|
58
|
+
@IsOptional()
|
|
59
|
+
@IsString()
|
|
60
|
+
search?: string;
|
|
61
|
+
|
|
62
|
+
// TODO: Add additional query fields as needed
|
|
63
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable, NotFoundException } from '@nestjs/common';
|
|
2
|
+
import { InjectRepository } from '@nestjs/typeorm';
|
|
3
|
+
import { Repository } from 'typeorm';
|
|
4
|
+
// import { {{EntityName}} } from './{{entity-name}}.entity';
|
|
5
|
+
import { Create{{ResourceName}}Dto, Update{{ResourceName}}Dto, Query{{ResourceName}}Dto } from './dtos';
|
|
6
|
+
|
|
7
|
+
@Injectable()
|
|
8
|
+
export class {{ServiceName}}Service {
|
|
9
|
+
constructor(
|
|
10
|
+
// @InjectRepository({{EntityName}})
|
|
11
|
+
// private readonly repository: Repository<{{EntityName}}>,
|
|
12
|
+
) {}
|
|
13
|
+
|
|
14
|
+
async findAll(query: Query{{ResourceName}}Dto) {
|
|
15
|
+
// TODO: Implement with pagination
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async findOne(id: string) {
|
|
20
|
+
// const entity = await this.repository.findOne({ where: { id } });
|
|
21
|
+
// if (!entity) {
|
|
22
|
+
// throw new NotFoundException(`{{ResourceName}} with id ${id} not found`);
|
|
23
|
+
// }
|
|
24
|
+
// return entity;
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async create(createDto: Create{{ResourceName}}Dto) {
|
|
29
|
+
// const entity = this.repository.create(createDto);
|
|
30
|
+
// return this.repository.save(entity);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async update(id: string, updateDto: Update{{ResourceName}}Dto) {
|
|
35
|
+
// const entity = await this.findOne(id);
|
|
36
|
+
// Object.assign(entity, updateDto);
|
|
37
|
+
// return this.repository.save(entity);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async remove(id: string) {
|
|
42
|
+
// const entity = await this.findOne(id);
|
|
43
|
+
// await this.repository.remove(entity);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
|
|
3
|
+
// Types
|
|
4
|
+
interface {{ComponentName}}Props {
|
|
5
|
+
// TODO: Define props
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* {{ComponentName}} - [Description]
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <{{ComponentName}} />
|
|
13
|
+
*/
|
|
14
|
+
export function {{ComponentName}}({ }: {{ComponentName}}Props) {
|
|
15
|
+
const [state, setState] = useState<string>('');
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<div className="{{component-name}}">
|
|
19
|
+
{/* TODO: Implement component */}
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default {{ComponentName}};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
// Types
|
|
4
|
+
interface Use{{HookName}}Options {
|
|
5
|
+
// TODO: Define options
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface Use{{HookName}}Return {
|
|
9
|
+
// TODO: Define return type
|
|
10
|
+
data: unknown;
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
error: Error | null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* use{{HookName}} - [Description]
|
|
17
|
+
*
|
|
18
|
+
* @param options - Configuration options
|
|
19
|
+
* @returns {Use{{HookName}}Return}
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const { data, isLoading, error } = use{{HookName}}();
|
|
23
|
+
*/
|
|
24
|
+
export function use{{HookName}}(
|
|
25
|
+
options: Use{{HookName}}Options = {}
|
|
26
|
+
): Use{{HookName}}Return {
|
|
27
|
+
const [data, setData] = useState<unknown>(null);
|
|
28
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
29
|
+
const [error, setError] = useState<Error | null>(null);
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
// TODO: Implement side effects
|
|
33
|
+
}, []);
|
|
34
|
+
|
|
35
|
+
const refetch = useCallback(async () => {
|
|
36
|
+
setIsLoading(true);
|
|
37
|
+
setError(null);
|
|
38
|
+
try {
|
|
39
|
+
// TODO: Implement fetch logic
|
|
40
|
+
} catch (err) {
|
|
41
|
+
setError(err instanceof Error ? err : new Error('Unknown error'));
|
|
42
|
+
} finally {
|
|
43
|
+
setIsLoading(false);
|
|
44
|
+
}
|
|
45
|
+
}, []);
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
data,
|
|
49
|
+
isLoading,
|
|
50
|
+
error,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default use{{HookName}};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
// Import the module to test
|
|
4
|
+
// import { {{FunctionName}} } from './{{file-name}}';
|
|
5
|
+
|
|
6
|
+
describe('{{FunctionName}}', () => {
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
// Setup before each test
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
// Cleanup after each test
|
|
13
|
+
vi.clearAllMocks();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('happy path', () => {
|
|
17
|
+
it('should return expected result for valid input', () => {
|
|
18
|
+
// Arrange
|
|
19
|
+
const input = {};
|
|
20
|
+
const expected = {};
|
|
21
|
+
|
|
22
|
+
// Act
|
|
23
|
+
// const result = {{FunctionName}}(input);
|
|
24
|
+
|
|
25
|
+
// Assert
|
|
26
|
+
// expect(result).toEqual(expected);
|
|
27
|
+
expect(true).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('edge cases', () => {
|
|
32
|
+
it('should handle empty input', () => {
|
|
33
|
+
// TODO: Implement test
|
|
34
|
+
expect(true).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should handle null/undefined input', () => {
|
|
38
|
+
// TODO: Implement test
|
|
39
|
+
expect(true).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
describe('error cases', () => {
|
|
44
|
+
it('should throw error for invalid input', () => {
|
|
45
|
+
// TODO: Implement test
|
|
46
|
+
// expect(() => {{FunctionName}}(invalidInput)).toThrow();
|
|
47
|
+
expect(true).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref, computed, onMounted } from 'vue';
|
|
3
|
+
|
|
4
|
+
// Props
|
|
5
|
+
interface Props {
|
|
6
|
+
// TODO: Define props
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
10
|
+
// TODO: Define defaults
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// Emits
|
|
14
|
+
const emit = defineEmits<{
|
|
15
|
+
// TODO: Define emits
|
|
16
|
+
// (e: 'update', value: string): void;
|
|
17
|
+
}>();
|
|
18
|
+
|
|
19
|
+
// State
|
|
20
|
+
const isLoading = ref(false);
|
|
21
|
+
|
|
22
|
+
// Computed
|
|
23
|
+
const computedValue = computed(() => {
|
|
24
|
+
// TODO: Implement computed
|
|
25
|
+
return null;
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Methods
|
|
29
|
+
function handleClick() {
|
|
30
|
+
// TODO: Implement
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Lifecycle
|
|
34
|
+
onMounted(() => {
|
|
35
|
+
// TODO: Implement
|
|
36
|
+
});
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<template>
|
|
40
|
+
<div class="{{component-name}}">
|
|
41
|
+
<!-- TODO: Implement template -->
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<style scoped>
|
|
46
|
+
.{{component-name}} {
|
|
47
|
+
/* TODO: Add styles */
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ref, computed, onMounted, onUnmounted } from 'vue';
|
|
2
|
+
|
|
3
|
+
// Types
|
|
4
|
+
interface Use{{ComposableName}}Options {
|
|
5
|
+
// TODO: Define options
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface Use{{ComposableName}}Return {
|
|
9
|
+
// TODO: Define return type
|
|
10
|
+
data: ReturnType<typeof ref<unknown>>;
|
|
11
|
+
isLoading: ReturnType<typeof ref<boolean>>;
|
|
12
|
+
error: ReturnType<typeof ref<Error | null>>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* use{{ComposableName}} - [Description]
|
|
17
|
+
*
|
|
18
|
+
* @param options - Configuration options
|
|
19
|
+
* @returns {Use{{ComposableName}}Return}
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const { data, isLoading, error } = use{{ComposableName}}();
|
|
23
|
+
*/
|
|
24
|
+
export function use{{ComposableName}}(
|
|
25
|
+
options: Use{{ComposableName}}Options = {}
|
|
26
|
+
): Use{{ComposableName}}Return {
|
|
27
|
+
const data = ref<unknown>(null);
|
|
28
|
+
const isLoading = ref(false);
|
|
29
|
+
const error = ref<Error | null>(null);
|
|
30
|
+
|
|
31
|
+
const fetchData = async () => {
|
|
32
|
+
isLoading.value = true;
|
|
33
|
+
error.value = null;
|
|
34
|
+
try {
|
|
35
|
+
// TODO: Implement fetch logic
|
|
36
|
+
} catch (err) {
|
|
37
|
+
error.value = err instanceof Error ? err : new Error('Unknown error');
|
|
38
|
+
} finally {
|
|
39
|
+
isLoading.value = false;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
onMounted(() => {
|
|
44
|
+
fetchData();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
data,
|
|
49
|
+
isLoading,
|
|
50
|
+
error,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default use{{ComposableName}};
|
|
@@ -1,31 +1,166 @@
|
|
|
1
|
-
# {{AGENT_NAME}} Knowledge Base
|
|
1
|
+
# {{AGENT_NAME}} - Knowledge Base
|
|
2
|
+
|
|
3
|
+
> **Purpose**: Long-term knowledge, self-improvement, case studies, patterns learned over time.
|
|
4
|
+
>
|
|
5
|
+
> This file grows with experience. Review and curate periodically.
|
|
2
6
|
|
|
3
7
|
## Metadata
|
|
4
8
|
- created: {{CREATED_AT}}
|
|
5
9
|
- last_updated: {{CREATED_AT}}
|
|
6
|
-
-
|
|
10
|
+
- role: {{ROLE_NAME}}
|
|
11
|
+
- expertise_level: Beginner
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Skills & Competencies
|
|
16
|
+
|
|
17
|
+
### Core Skills
|
|
18
|
+
| Skill | Level | Notes |
|
|
19
|
+
|-------|-------|-------|
|
|
20
|
+
| [Skill 1] | Learning/Practicing/Expert | [Notes] |
|
|
21
|
+
|
|
22
|
+
### Skills to Develop
|
|
23
|
+
- [ ] [Skill 1] - [Why needed]
|
|
24
|
+
|
|
25
|
+
---
|
|
7
26
|
|
|
8
|
-
##
|
|
9
|
-
[Project-specific information will be added as you work]
|
|
27
|
+
## Case Studies
|
|
10
28
|
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
> Real examples from this project - what worked, what didn't
|
|
30
|
+
|
|
31
|
+
### Case 1: [Title]
|
|
32
|
+
**Context**: [When/where this happened]
|
|
33
|
+
**Problem**: [What was the challenge]
|
|
34
|
+
**Solution**: [How it was solved]
|
|
35
|
+
**Outcome**: [Result]
|
|
36
|
+
**Pattern**: [Reusable pattern extracted]
|
|
37
|
+
|
|
38
|
+
### Case 2: [Title]
|
|
39
|
+
...
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Patterns Learned
|
|
44
|
+
|
|
45
|
+
### Design Patterns
|
|
46
|
+
```
|
|
47
|
+
// Pattern: [Name]
|
|
48
|
+
// When to use: [Scenario]
|
|
49
|
+
// Example:
|
|
50
|
+
[code or description]
|
|
51
|
+
```
|
|
13
52
|
|
|
14
53
|
### Code Patterns
|
|
15
54
|
```
|
|
16
|
-
//
|
|
55
|
+
// Pattern: [Name]
|
|
56
|
+
// When to use: [Scenario]
|
|
57
|
+
// Example:
|
|
58
|
+
[code snippet]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Workflow Patterns
|
|
62
|
+
| Pattern | When to Use | Example |
|
|
63
|
+
|---------|-------------|---------|
|
|
64
|
+
| [Pattern] | [Scenario] | [Example] |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Anti-Patterns to Avoid
|
|
69
|
+
|
|
70
|
+
> Things that DON'T work - learn from mistakes
|
|
71
|
+
|
|
72
|
+
### Anti-Pattern 1: [Name]
|
|
73
|
+
- **What**: [Description]
|
|
74
|
+
- **Why it seems OK**: [Why people do it]
|
|
75
|
+
- **Why it fails**: [Real problem]
|
|
76
|
+
- **Better approach**: [Alternative]
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Best Practices
|
|
81
|
+
|
|
82
|
+
### What Works
|
|
83
|
+
1. [Practice 1] - [Why it works]
|
|
84
|
+
2. [Practice 2] - [Why it works]
|
|
85
|
+
|
|
86
|
+
### What Doesn't Work
|
|
87
|
+
1. [Practice 1] - [Why it fails]
|
|
88
|
+
2. [Practice 2] - [Why it fails]
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Self-Improvement Log
|
|
93
|
+
|
|
94
|
+
> Track corrections and improvements over time
|
|
95
|
+
|
|
96
|
+
### [Date]: [Improvement Title]
|
|
97
|
+
**What happened**: [Description]
|
|
98
|
+
**What was wrong**: [The mistake]
|
|
99
|
+
**Correction**: [How to do it right]
|
|
100
|
+
**Rule added**: [New rule to prevent]
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Key Decisions
|
|
105
|
+
|
|
106
|
+
> Important decisions made and why
|
|
107
|
+
|
|
108
|
+
### [Date]: [Decision Title]
|
|
109
|
+
- **Decision**: [What was decided]
|
|
110
|
+
- **Alternatives considered**: [What else was considered]
|
|
111
|
+
- **Rationale**: [Why this choice]
|
|
112
|
+
- **Outcome**: [Result so far]
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Resources
|
|
117
|
+
|
|
118
|
+
### Documentation
|
|
119
|
+
- [Link/Path] - [Description]
|
|
120
|
+
|
|
121
|
+
### Tools
|
|
122
|
+
- [Tool] - [Use case]
|
|
123
|
+
|
|
124
|
+
### References
|
|
125
|
+
- [Reference] - [When to use]
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Project-Specific Knowledge
|
|
130
|
+
|
|
131
|
+
### Architecture
|
|
132
|
+
[Brief architecture overview]
|
|
133
|
+
|
|
134
|
+
### Key Files
|
|
135
|
+
```
|
|
136
|
+
project/
|
|
137
|
+
├── [important file] - [purpose]
|
|
138
|
+
└── ...
|
|
17
139
|
```
|
|
18
140
|
|
|
19
|
-
###
|
|
20
|
-
- [
|
|
141
|
+
### Conventions
|
|
142
|
+
- [Convention 1]
|
|
143
|
+
- [Convention 2]
|
|
144
|
+
|
|
145
|
+
### Gotchas
|
|
146
|
+
- [Gotcha 1] - [How to avoid]
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Learning Roadmap
|
|
151
|
+
|
|
152
|
+
### Completed
|
|
153
|
+
- [x] [Learning 1]
|
|
154
|
+
- [x] [Learning 2]
|
|
155
|
+
|
|
156
|
+
### In Progress
|
|
157
|
+
- [ ] [Learning 3]
|
|
21
158
|
|
|
22
|
-
###
|
|
23
|
-
- [
|
|
159
|
+
### To Learn
|
|
160
|
+
- [ ] [Learning 4]
|
|
24
161
|
|
|
25
|
-
|
|
26
|
-
(Feedback will be tracked here)
|
|
162
|
+
---
|
|
27
163
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **Action item:**
|
|
164
|
+
*Last updated: {{CREATED_AT}}*
|
|
165
|
+
*Total case studies: 0*
|
|
166
|
+
*Total patterns: 0*
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Meeting Notes - {{TITLE}}
|
|
2
|
+
|
|
3
|
+
**Date**: {{DATE}}
|
|
4
|
+
**Time**: {{START_TIME}} - {{END_TIME}}
|
|
5
|
+
**Location**: {{LOCATION_OR_PLATFORM}}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Participants
|
|
10
|
+
|
|
11
|
+
| Name | Role |
|
|
12
|
+
|------|------|
|
|
13
|
+
| {{PARTICIPANT_1}} | {{ROLE_1}} |
|
|
14
|
+
| {{PARTICIPANT_2}} | {{ROLE_2}} |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Agenda
|
|
19
|
+
|
|
20
|
+
1. {{AGENDA_ITEM_1}}
|
|
21
|
+
2. {{AGENDA_ITEM_2}}
|
|
22
|
+
3. {{AGENDA_ITEM_3}}
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Discussion Points
|
|
27
|
+
|
|
28
|
+
### Topic 1: {{TOPIC_NAME}}
|
|
29
|
+
|
|
30
|
+
**Context**: [Background information]
|
|
31
|
+
|
|
32
|
+
**Discussion**:
|
|
33
|
+
- Point 1
|
|
34
|
+
- Point 2
|
|
35
|
+
- Point 3
|
|
36
|
+
|
|
37
|
+
**Questions Raised**:
|
|
38
|
+
- Q: [Question]
|
|
39
|
+
- A: [Answer]
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Topic 2: {{TOPIC_NAME}}
|
|
44
|
+
|
|
45
|
+
**Context**: [Background information]
|
|
46
|
+
|
|
47
|
+
**Discussion**:
|
|
48
|
+
- Point 1
|
|
49
|
+
- Point 2
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Decisions Made
|
|
54
|
+
|
|
55
|
+
| # | Decision | Rationale | Impact |
|
|
56
|
+
|---|----------|-----------|--------|
|
|
57
|
+
| 1 | [Decision] | [Why] | [What changes] |
|
|
58
|
+
| 2 | [Decision] | [Why] | [What changes] |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Action Items
|
|
63
|
+
|
|
64
|
+
| # | Task | Owner | Due Date | Status |
|
|
65
|
+
|---|------|-------|----------|--------|
|
|
66
|
+
| 1 | [Task description] | [Name] | [Date] | [ ] Pending |
|
|
67
|
+
| 2 | [Task description] | [Name] | [Date] | [ ] Pending |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Documents to Update
|
|
72
|
+
|
|
73
|
+
- [ ] {{DOCUMENT_1}} - [What to update]
|
|
74
|
+
- [ ] {{DOCUMENT_2}} - [What to update]
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Open Questions / Follow-ups
|
|
79
|
+
|
|
80
|
+
| # | Question | Owner | Due Date |
|
|
81
|
+
|---|----------|-------|----------|
|
|
82
|
+
| 1 | [Question] | [Name] | [Date] |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Next Steps
|
|
87
|
+
|
|
88
|
+
1. [Next step 1]
|
|
89
|
+
2. [Next step 2]
|
|
90
|
+
3. [Next step 3]
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Next Meeting
|
|
95
|
+
|
|
96
|
+
**Date**: {{NEXT_MEETING_DATE}}
|
|
97
|
+
**Agenda Preview**:
|
|
98
|
+
- {{NEXT_AGENDA_1}}
|
|
99
|
+
- {{NEXT_AGENDA_2}}
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
|
|
105
|
+
[Additional notes, context, or references]
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
*Meeting notes recorded by: {{RECORDER_NAME}}*
|
|
110
|
+
*Last updated: {{DATE}}*
|