codingbuddy-rules 1.3.1 β 2.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/.ai-rules/CHANGELOG.md +50 -11
- package/.ai-rules/adapters/claude-code.md +285 -0
- package/.ai-rules/adapters/cursor.md +120 -98
- package/.ai-rules/adapters/opencode.md +35 -2
- package/.ai-rules/agents/README.md +299 -48
- package/.ai-rules/agents/accessibility-specialist.json +4 -0
- package/.ai-rules/agents/act-mode.json +5 -0
- package/.ai-rules/agents/agent-architect.json +205 -0
- package/.ai-rules/agents/architecture-specialist.json +4 -0
- package/.ai-rules/agents/backend-developer.json +6 -0
- package/.ai-rules/agents/code-quality-specialist.json +4 -0
- package/.ai-rules/agents/code-reviewer.json +5 -0
- package/.ai-rules/agents/data-engineer.json +376 -0
- package/.ai-rules/agents/devops-engineer.json +5 -0
- package/.ai-rules/agents/documentation-specialist.json +4 -0
- package/.ai-rules/agents/eval-mode.json +5 -0
- package/.ai-rules/agents/frontend-developer.json +6 -0
- package/.ai-rules/agents/i18n-specialist.json +393 -0
- package/.ai-rules/agents/mobile-developer.json +355 -0
- package/.ai-rules/agents/performance-specialist.json +4 -0
- package/.ai-rules/agents/plan-mode.json +5 -0
- package/.ai-rules/agents/security-specialist.json +4 -0
- package/.ai-rules/agents/seo-specialist.json +4 -0
- package/.ai-rules/agents/solution-architect.json +181 -0
- package/.ai-rules/agents/technical-planner.json +217 -0
- package/.ai-rules/agents/test-strategy-specialist.json +4 -0
- package/.ai-rules/agents/tooling-engineer.json +202 -0
- package/.ai-rules/agents/ui-ux-designer.json +4 -0
- package/.ai-rules/checklists/accessibility.json +132 -0
- package/.ai-rules/checklists/code-quality.json +97 -0
- package/.ai-rules/checklists/index.json +47 -0
- package/.ai-rules/checklists/performance.json +97 -0
- package/.ai-rules/checklists/security.json +119 -0
- package/.ai-rules/checklists/seo.json +97 -0
- package/.ai-rules/checklists/testing.json +97 -0
- package/.ai-rules/keyword-modes.json +17 -3
- package/.ai-rules/skills/api-design/SKILL.md +459 -0
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"domains": [
|
|
4
|
+
{
|
|
5
|
+
"id": "security",
|
|
6
|
+
"name": "Security",
|
|
7
|
+
"icon": "π",
|
|
8
|
+
"file": "security.json",
|
|
9
|
+
"description": "Security-related review items (authentication, input validation, data protection)"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "accessibility",
|
|
13
|
+
"name": "Accessibility",
|
|
14
|
+
"icon": "βΏ",
|
|
15
|
+
"file": "accessibility.json",
|
|
16
|
+
"description": "WCAG 2.1 AA compliance items (forms, interactive elements, content)"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "performance",
|
|
20
|
+
"name": "Performance",
|
|
21
|
+
"icon": "β‘",
|
|
22
|
+
"file": "performance.json",
|
|
23
|
+
"description": "Performance optimization items (rendering, loading, data fetching)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "testing",
|
|
27
|
+
"name": "Testing",
|
|
28
|
+
"icon": "π§ͺ",
|
|
29
|
+
"file": "testing.json",
|
|
30
|
+
"description": "Testing strategy items (unit, component, API testing)"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "code-quality",
|
|
34
|
+
"name": "Code Quality",
|
|
35
|
+
"icon": "π",
|
|
36
|
+
"file": "code-quality.json",
|
|
37
|
+
"description": "Code quality items (TypeScript, SOLID principles, error handling)"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "seo",
|
|
41
|
+
"name": "SEO",
|
|
42
|
+
"icon": "π",
|
|
43
|
+
"file": "seo.json",
|
|
44
|
+
"description": "SEO optimization items (metadata, structure, links)"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "performance",
|
|
3
|
+
"icon": "β‘",
|
|
4
|
+
"description": "Performance optimization review items",
|
|
5
|
+
"categories": [
|
|
6
|
+
{
|
|
7
|
+
"name": "rendering",
|
|
8
|
+
"triggers": {
|
|
9
|
+
"files": ["**/components/**", "**/page/**", "**/*.tsx", "**/*.jsx"],
|
|
10
|
+
"imports": ["react", "next", "useMemo", "useCallback", "memo"],
|
|
11
|
+
"patterns": ["useState", "useEffect", "useMemo", "useCallback", "memo("]
|
|
12
|
+
},
|
|
13
|
+
"items": [
|
|
14
|
+
{
|
|
15
|
+
"id": "perf-render-001",
|
|
16
|
+
"text": "Memoize expensive calculations with useMemo",
|
|
17
|
+
"priority": "medium",
|
|
18
|
+
"reason": "Prevents unnecessary recalculations on re-render"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "perf-render-002",
|
|
22
|
+
"text": "Use useCallback for callback props to child components",
|
|
23
|
+
"priority": "medium",
|
|
24
|
+
"reason": "Prevents unnecessary child re-renders"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "perf-render-003",
|
|
28
|
+
"text": "Avoid inline object/array creation in JSX",
|
|
29
|
+
"priority": "low",
|
|
30
|
+
"reason": "New references cause unnecessary re-renders"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "perf-render-004",
|
|
34
|
+
"text": "Use React.memo for pure presentational components",
|
|
35
|
+
"priority": "low",
|
|
36
|
+
"reason": "Skip re-renders when props haven't changed"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "loading",
|
|
42
|
+
"triggers": {
|
|
43
|
+
"files": ["**/page/**", "**/layout/**", "**/app/**"],
|
|
44
|
+
"imports": ["next/dynamic", "next/image", "react-lazy-load"],
|
|
45
|
+
"patterns": ["dynamic(", "lazy(", "Suspense", "loading"]
|
|
46
|
+
},
|
|
47
|
+
"items": [
|
|
48
|
+
{
|
|
49
|
+
"id": "perf-load-001",
|
|
50
|
+
"text": "Use code splitting with dynamic imports",
|
|
51
|
+
"priority": "high",
|
|
52
|
+
"reason": "Reduces initial bundle size"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "perf-load-002",
|
|
56
|
+
"text": "Optimize images (WebP, proper sizing, lazy loading)",
|
|
57
|
+
"priority": "high",
|
|
58
|
+
"reason": "Images are often the largest assets"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "perf-load-003",
|
|
62
|
+
"text": "Implement loading skeletons for async content",
|
|
63
|
+
"priority": "medium",
|
|
64
|
+
"reason": "Improves perceived performance"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "data_fetching",
|
|
70
|
+
"triggers": {
|
|
71
|
+
"files": ["**/api/**", "**/hook/**", "**/query/**"],
|
|
72
|
+
"imports": ["@tanstack/react-query", "swr", "axios"],
|
|
73
|
+
"patterns": ["useQuery", "useSWR", "fetch(", "getServerSideProps"]
|
|
74
|
+
},
|
|
75
|
+
"items": [
|
|
76
|
+
{
|
|
77
|
+
"id": "perf-data-001",
|
|
78
|
+
"text": "Implement proper caching strategy",
|
|
79
|
+
"priority": "high",
|
|
80
|
+
"reason": "Reduces unnecessary network requests"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "perf-data-002",
|
|
84
|
+
"text": "Use stale-while-revalidate pattern where appropriate",
|
|
85
|
+
"priority": "medium",
|
|
86
|
+
"reason": "Shows cached data while fetching fresh data"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "perf-data-003",
|
|
90
|
+
"text": "Paginate or virtualize large lists",
|
|
91
|
+
"priority": "high",
|
|
92
|
+
"reason": "Rendering thousands of items kills performance"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "security",
|
|
3
|
+
"icon": "π",
|
|
4
|
+
"description": "Security-related review items",
|
|
5
|
+
"categories": [
|
|
6
|
+
{
|
|
7
|
+
"name": "authentication",
|
|
8
|
+
"triggers": {
|
|
9
|
+
"files": [
|
|
10
|
+
"**/auth/**",
|
|
11
|
+
"**/login/**",
|
|
12
|
+
"**/session/**",
|
|
13
|
+
"**/password/**",
|
|
14
|
+
"**/signin/**",
|
|
15
|
+
"**/signup/**"
|
|
16
|
+
],
|
|
17
|
+
"imports": [
|
|
18
|
+
"bcrypt",
|
|
19
|
+
"argon2",
|
|
20
|
+
"jsonwebtoken",
|
|
21
|
+
"passport",
|
|
22
|
+
"next-auth",
|
|
23
|
+
"@auth/*",
|
|
24
|
+
"jose"
|
|
25
|
+
],
|
|
26
|
+
"patterns": [
|
|
27
|
+
"password",
|
|
28
|
+
"token",
|
|
29
|
+
"credential",
|
|
30
|
+
"session",
|
|
31
|
+
"authenticate"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"items": [
|
|
35
|
+
{
|
|
36
|
+
"id": "sec-auth-001",
|
|
37
|
+
"text": "Hash passwords using bcrypt/argon2 (never store plaintext)",
|
|
38
|
+
"priority": "critical",
|
|
39
|
+
"reason": "Plaintext passwords can be stolen if database is compromised",
|
|
40
|
+
"reference": "OWASP Authentication Cheatsheet"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "sec-auth-002",
|
|
44
|
+
"text": "Implement rate limiting on login attempts",
|
|
45
|
+
"priority": "high",
|
|
46
|
+
"reason": "Prevents brute force attacks"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "sec-auth-003",
|
|
50
|
+
"text": "Use secure session management (HttpOnly, Secure, SameSite cookies)",
|
|
51
|
+
"priority": "critical",
|
|
52
|
+
"reason": "Prevents session hijacking and XSS attacks"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "sec-auth-004",
|
|
56
|
+
"text": "Implement proper logout (invalidate session server-side)",
|
|
57
|
+
"priority": "high",
|
|
58
|
+
"reason": "Ensures complete session termination"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "input_validation",
|
|
64
|
+
"triggers": {
|
|
65
|
+
"files": ["**/api/**", "**/form/**", "**/input/**", "**/handler/**"],
|
|
66
|
+
"imports": ["zod", "yup", "joi", "validator"],
|
|
67
|
+
"patterns": ["validate", "sanitize", "input", "formData"]
|
|
68
|
+
},
|
|
69
|
+
"items": [
|
|
70
|
+
{
|
|
71
|
+
"id": "sec-input-001",
|
|
72
|
+
"text": "Validate all user input server-side",
|
|
73
|
+
"priority": "critical",
|
|
74
|
+
"reason": "Client-side validation can be bypassed"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "sec-input-002",
|
|
78
|
+
"text": "Sanitize input to prevent XSS attacks",
|
|
79
|
+
"priority": "critical",
|
|
80
|
+
"reason": "Unsanitized input can execute malicious scripts"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "sec-input-003",
|
|
84
|
+
"text": "Use parameterized queries to prevent SQL injection",
|
|
85
|
+
"priority": "critical",
|
|
86
|
+
"reason": "Raw queries with user input enable SQL injection"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"name": "data_protection",
|
|
92
|
+
"triggers": {
|
|
93
|
+
"files": ["**/api/**", "**/data/**", "**/user/**", "**/profile/**"],
|
|
94
|
+
"imports": ["crypto", "node:crypto"],
|
|
95
|
+
"patterns": ["encrypt", "decrypt", "secret", "private", "pii"]
|
|
96
|
+
},
|
|
97
|
+
"items": [
|
|
98
|
+
{
|
|
99
|
+
"id": "sec-data-001",
|
|
100
|
+
"text": "Encrypt sensitive data at rest",
|
|
101
|
+
"priority": "high",
|
|
102
|
+
"reason": "Protects data if storage is compromised"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "sec-data-002",
|
|
106
|
+
"text": "Use HTTPS for all data transmission",
|
|
107
|
+
"priority": "critical",
|
|
108
|
+
"reason": "Prevents man-in-the-middle attacks"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "sec-data-003",
|
|
112
|
+
"text": "Never log sensitive information (passwords, tokens, PII)",
|
|
113
|
+
"priority": "high",
|
|
114
|
+
"reason": "Logs can be accessed by unauthorized parties"
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "seo",
|
|
3
|
+
"icon": "π",
|
|
4
|
+
"description": "SEO optimization review items",
|
|
5
|
+
"categories": [
|
|
6
|
+
{
|
|
7
|
+
"name": "metadata",
|
|
8
|
+
"triggers": {
|
|
9
|
+
"files": ["**/page/**", "**/layout/**", "**/app/**", "**/head/**"],
|
|
10
|
+
"imports": ["next/head", "react-helmet"],
|
|
11
|
+
"patterns": ["<title", "<meta", "metadata", "generateMetadata"]
|
|
12
|
+
},
|
|
13
|
+
"items": [
|
|
14
|
+
{
|
|
15
|
+
"id": "seo-meta-001",
|
|
16
|
+
"text": "Set unique, descriptive title for each page",
|
|
17
|
+
"priority": "critical",
|
|
18
|
+
"reason": "Titles appear in search results and browser tabs"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "seo-meta-002",
|
|
22
|
+
"text": "Write compelling meta descriptions (150-160 chars)",
|
|
23
|
+
"priority": "high",
|
|
24
|
+
"reason": "Descriptions appear in search result snippets"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "seo-meta-003",
|
|
28
|
+
"text": "Set canonical URL to prevent duplicate content issues",
|
|
29
|
+
"priority": "medium",
|
|
30
|
+
"reason": "Helps search engines understand the primary URL"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "seo-meta-004",
|
|
34
|
+
"text": "Add Open Graph and Twitter Card meta tags",
|
|
35
|
+
"priority": "medium",
|
|
36
|
+
"reason": "Controls appearance when shared on social media"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "structure",
|
|
42
|
+
"triggers": {
|
|
43
|
+
"files": ["**/page/**", "**/layout/**", "**/*.tsx", "**/*.jsx"],
|
|
44
|
+
"imports": [],
|
|
45
|
+
"patterns": ["<h1", "<h2", "<main", "<article", "<nav"]
|
|
46
|
+
},
|
|
47
|
+
"items": [
|
|
48
|
+
{
|
|
49
|
+
"id": "seo-struct-001",
|
|
50
|
+
"text": "Use exactly one h1 per page",
|
|
51
|
+
"priority": "high",
|
|
52
|
+
"reason": "H1 signals main topic to search engines"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "seo-struct-002",
|
|
56
|
+
"text": "Use semantic HTML elements (article, section, nav)",
|
|
57
|
+
"priority": "medium",
|
|
58
|
+
"reason": "Semantic markup helps search engines understand content"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "seo-struct-003",
|
|
62
|
+
"text": "Implement breadcrumb navigation with structured data",
|
|
63
|
+
"priority": "low",
|
|
64
|
+
"reason": "Helps users and search engines navigate site hierarchy"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "links",
|
|
70
|
+
"triggers": {
|
|
71
|
+
"files": ["**/page/**", "**/*.tsx", "**/*.jsx"],
|
|
72
|
+
"imports": ["next/link"],
|
|
73
|
+
"patterns": ["<a ", "<Link", "href="]
|
|
74
|
+
},
|
|
75
|
+
"items": [
|
|
76
|
+
{
|
|
77
|
+
"id": "seo-link-001",
|
|
78
|
+
"text": "Use descriptive link text (avoid 'click here')",
|
|
79
|
+
"priority": "medium",
|
|
80
|
+
"reason": "Link text signals page content to search engines"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "seo-link-002",
|
|
84
|
+
"text": "Add rel='noopener noreferrer' to external links",
|
|
85
|
+
"priority": "medium",
|
|
86
|
+
"reason": "Security and performance best practice"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "seo-link-003",
|
|
90
|
+
"text": "Ensure all internal links use relative paths",
|
|
91
|
+
"priority": "low",
|
|
92
|
+
"reason": "Maintains link equity within the site"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"domain": "testing",
|
|
3
|
+
"icon": "π§ͺ",
|
|
4
|
+
"description": "Testing strategy and coverage review items",
|
|
5
|
+
"categories": [
|
|
6
|
+
{
|
|
7
|
+
"name": "unit_testing",
|
|
8
|
+
"triggers": {
|
|
9
|
+
"files": ["**/util/**", "**/lib/**", "**/helper/**", "**/service/**"],
|
|
10
|
+
"imports": ["vitest", "jest", "@testing-library/*"],
|
|
11
|
+
"patterns": ["describe", "it(", "test(", "expect"]
|
|
12
|
+
},
|
|
13
|
+
"items": [
|
|
14
|
+
{
|
|
15
|
+
"id": "test-unit-001",
|
|
16
|
+
"text": "Write tests for all pure functions",
|
|
17
|
+
"priority": "high",
|
|
18
|
+
"reason": "Pure functions are easiest to test and most valuable to cover"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "test-unit-002",
|
|
22
|
+
"text": "Cover edge cases and error conditions",
|
|
23
|
+
"priority": "high",
|
|
24
|
+
"reason": "Edge cases often hide bugs"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "test-unit-003",
|
|
28
|
+
"text": "Use descriptive test names that explain behavior",
|
|
29
|
+
"priority": "medium",
|
|
30
|
+
"reason": "Test names document expected behavior"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "test-unit-004",
|
|
34
|
+
"text": "Target 90%+ coverage for core logic",
|
|
35
|
+
"priority": "high",
|
|
36
|
+
"reason": "High coverage reduces regression risk"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "component_testing",
|
|
42
|
+
"triggers": {
|
|
43
|
+
"files": ["**/components/**", "**/features/**", "**/widgets/**"],
|
|
44
|
+
"imports": ["@testing-library/react", "react-test-renderer"],
|
|
45
|
+
"patterns": ["render(", "screen.", "userEvent"]
|
|
46
|
+
},
|
|
47
|
+
"items": [
|
|
48
|
+
{
|
|
49
|
+
"id": "test-comp-001",
|
|
50
|
+
"text": "Test user interactions (click, type, submit)",
|
|
51
|
+
"priority": "high",
|
|
52
|
+
"reason": "UI should respond correctly to user actions"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "test-comp-002",
|
|
56
|
+
"text": "Test different component states (loading, error, success)",
|
|
57
|
+
"priority": "high",
|
|
58
|
+
"reason": "Components should handle all states gracefully"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "test-comp-003",
|
|
62
|
+
"text": "Use Testing Library queries by role/label for accessibility",
|
|
63
|
+
"priority": "medium",
|
|
64
|
+
"reason": "Tests that query like users improve accessibility"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "api_testing",
|
|
70
|
+
"triggers": {
|
|
71
|
+
"files": ["**/api/**", "**/hook/**", "**/query/**", "**/mutation/**"],
|
|
72
|
+
"imports": ["msw", "nock", "@tanstack/react-query"],
|
|
73
|
+
"patterns": ["fetch(", "axios", "useMutation", "useQuery"]
|
|
74
|
+
},
|
|
75
|
+
"items": [
|
|
76
|
+
{
|
|
77
|
+
"id": "test-api-001",
|
|
78
|
+
"text": "Mock API responses with MSW for realistic testing",
|
|
79
|
+
"priority": "high",
|
|
80
|
+
"reason": "Avoid mocking implementation details"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "test-api-002",
|
|
84
|
+
"text": "Test loading, success, and error states",
|
|
85
|
+
"priority": "high",
|
|
86
|
+
"reason": "API calls can fail in multiple ways"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "test-api-003",
|
|
90
|
+
"text": "Test retry and caching behavior",
|
|
91
|
+
"priority": "medium",
|
|
92
|
+
"reason": "Data fetching libraries have complex behavior"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
"instructions": "μ€κ³ μ°μ μ κ·Ό. TDD κ΄μ μμ ν
μ€νΈ μΌμ΄μ€ λ¨Όμ μ μ. ꡬν μ μν€ν
μ² κ²ν .",
|
|
6
6
|
"rules": ["rules/core.md", "rules/augmented-coding.md"],
|
|
7
7
|
"agent": "plan-mode",
|
|
8
|
-
"delegates_to": "frontend-developer"
|
|
8
|
+
"delegates_to": "frontend-developer",
|
|
9
|
+
"defaultSpecialists": [
|
|
10
|
+
"architecture-specialist",
|
|
11
|
+
"test-strategy-specialist"
|
|
12
|
+
]
|
|
9
13
|
},
|
|
10
14
|
"ACT": {
|
|
11
15
|
"description": "Actual task execution phase",
|
|
@@ -16,14 +20,24 @@
|
|
|
16
20
|
"rules/augmented-coding.md"
|
|
17
21
|
],
|
|
18
22
|
"agent": "act-mode",
|
|
19
|
-
"delegates_to": "frontend-developer"
|
|
23
|
+
"delegates_to": "frontend-developer",
|
|
24
|
+
"defaultSpecialists": [
|
|
25
|
+
"code-quality-specialist",
|
|
26
|
+
"test-strategy-specialist"
|
|
27
|
+
]
|
|
20
28
|
},
|
|
21
29
|
"EVAL": {
|
|
22
30
|
"description": "Result review and assessment phase",
|
|
23
31
|
"instructions": "μ½λ νμ§ κ²ν . SOLID μμΉ μ€μ νμΈ. ν
μ€νΈ 컀λ²λ¦¬μ§ μ κ². κ°μ μ μ μ.",
|
|
24
32
|
"rules": ["rules/core.md", "rules/augmented-coding.md"],
|
|
25
33
|
"agent": "eval-mode",
|
|
26
|
-
"delegates_to": "code-reviewer"
|
|
34
|
+
"delegates_to": "code-reviewer",
|
|
35
|
+
"defaultSpecialists": [
|
|
36
|
+
"security-specialist",
|
|
37
|
+
"accessibility-specialist",
|
|
38
|
+
"performance-specialist",
|
|
39
|
+
"code-quality-specialist"
|
|
40
|
+
]
|
|
27
41
|
}
|
|
28
42
|
},
|
|
29
43
|
"defaultMode": "PLAN"
|