@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.
Files changed (124) hide show
  1. package/.claude/commands/skills/discover.md +127 -0
  2. package/.claude/commands/skills/install.md +225 -0
  3. package/.claude/commands/skills/review.md +234 -0
  4. package/.claude/commands/utils/learn.md +142 -0
  5. package/.claude/commands/utils/retrospect.md +62 -0
  6. package/.claude/commands/utils/switch.md +113 -0
  7. package/.claude/commands/utils/sync.md +183 -0
  8. package/.claude/rules/common/general-rules.md +6 -0
  9. package/.claude/rules/role-rules/dev-be-rules.md +241 -0
  10. package/.claude/rules/role-rules/dev-fe-rules.md +76 -0
  11. package/.claude/skills/SKILL-INDEX.md +24 -5
  12. package/.claude/skills/core/knowledge-graph/SKILL.md +214 -0
  13. package/.claude/skills/core/sequential-thinking/SKILL.md +112 -0
  14. package/.claude/skills/core/sequential-thinking/references/advanced.md +122 -0
  15. package/.claude/skills/core/sequential-thinking/references/examples.md +274 -0
  16. package/.claude/skills/domain/architecture/c4-architecture/SKILL.md +314 -0
  17. package/.claude/skills/domain/architecture/c4-architecture/references/advanced-patterns.md +552 -0
  18. package/.claude/skills/domain/architecture/c4-architecture/references/c4-syntax.md +492 -0
  19. package/.claude/skills/domain/architecture/c4-architecture/references/common-mistakes.md +437 -0
  20. package/.claude/skills/domain/architecture/mermaid-diagrams/SKILL.md +238 -0
  21. package/.claude/skills/domain/architecture/mermaid-diagrams/references/advanced-features.md +556 -0
  22. package/.claude/skills/domain/architecture/mermaid-diagrams/references/architecture-diagrams.md +192 -0
  23. package/.claude/skills/domain/architecture/mermaid-diagrams/references/c4-diagrams.md +410 -0
  24. package/.claude/skills/domain/architecture/mermaid-diagrams/references/class-diagrams.md +361 -0
  25. package/.claude/skills/domain/architecture/mermaid-diagrams/references/erd-diagrams.md +510 -0
  26. package/.claude/skills/domain/architecture/mermaid-diagrams/references/flowcharts.md +450 -0
  27. package/.claude/skills/domain/architecture/mermaid-diagrams/references/sequence-diagrams.md +394 -0
  28. package/.claude/skills/domain/backend/testing-be/SKILL.md +121 -17
  29. package/.claude/skills/domain/design/design-system/SKILL.md +169 -0
  30. package/.claude/skills/domain/design/html-css-output/SKILL.md +253 -0
  31. package/.claude/skills/domain/design/mockup-creation/SKILL.md +230 -0
  32. package/.claude/skills/domain/design/responsive-design/SKILL.md +207 -0
  33. package/.claude/skills/domain/design/ui-design/SKILL.md +124 -0
  34. package/.claude/skills/domain/frontend/testing-fe/SKILL.md +143 -38
  35. package/.claude/skills/domain/frontend/ui-ux-pro-max/README.md +45 -0
  36. package/.claude/skills/domain/frontend/ui-ux-pro-max/SKILL.md +404 -0
  37. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/charts.csv +26 -0
  38. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/colors.csv +97 -0
  39. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/icons.csv +101 -0
  40. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/landing.csv +31 -0
  41. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/products.csv +97 -0
  42. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/react-performance.csv +45 -0
  43. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  44. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  45. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  46. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  47. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  48. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  49. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  50. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  51. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -0
  52. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  53. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  54. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  55. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  56. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/styles.csv +68 -0
  57. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/typography.csv +58 -0
  58. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  59. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  60. package/.claude/skills/domain/frontend/ui-ux-pro-max/data/web-interface.csv +31 -0
  61. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/core.py +253 -0
  62. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -0
  63. package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/search.py +114 -0
  64. package/.claude/skills/domain/product/requirements-clarity/SKILL.md +340 -0
  65. package/.claude/skills/skills-registry.yaml +103 -8
  66. package/README.md +107 -33
  67. package/README.npm.md +252 -0
  68. package/TUTORIAL.md +256 -0
  69. package/bin/agent-team.js +26 -7
  70. package/config/roles.yaml +107 -0
  71. package/docs/01-architecture.md +699 -0
  72. package/docs/02-setup-guide.md +634 -0
  73. package/docs/03-skills-guide.md +628 -0
  74. package/docs/04-workflows.md +792 -0
  75. package/docs/05-model-strategy.md +550 -0
  76. package/docs/06-extend-guide.md +1226 -0
  77. package/docs/07-quick-reference.md +578 -0
  78. package/docs/08-skills-discovery.md +342 -0
  79. package/docs/README.md +134 -0
  80. package/docs/rqm.md +560 -0
  81. package/package.json +10 -4
  82. package/scripts/postinstall.js +46 -0
  83. package/src/commands/add.js +131 -67
  84. package/src/commands/init.js +419 -9
  85. package/src/commands/list.js +20 -16
  86. package/src/commands/projects.js +127 -0
  87. package/src/commands/setup-hooks.js +261 -0
  88. package/src/index.js +0 -1
  89. package/src/utils/file-utils.js +147 -50
  90. package/src/utils/global-registry.js +224 -0
  91. package/templates/CLAUDE.md.tmpl +128 -20
  92. package/templates/MEMORY.md.tmpl +119 -0
  93. package/templates/agent.md.tmpl +205 -0
  94. package/templates/code/nestjs-controller.ts.tmpl +49 -0
  95. package/templates/code/nestjs-dto.ts.tmpl +63 -0
  96. package/templates/code/nestjs-service.ts.tmpl +45 -0
  97. package/templates/code/react-component.tsx.tmpl +24 -0
  98. package/templates/code/react-hook.ts.tmpl +54 -0
  99. package/templates/code/test.spec.ts.tmpl +50 -0
  100. package/templates/code/vue-component.vue.tmpl +49 -0
  101. package/templates/code/vue-composable.ts.tmpl +54 -0
  102. package/templates/knowledge.md.tmpl +152 -17
  103. package/templates/meeting-notes.md.tmpl +110 -0
  104. package/templates/memory/hooks.memory.json +50 -0
  105. package/templates/memory/settings.memory.json +16 -0
  106. package/templates/reports/bug-report.md.tmpl +164 -0
  107. package/templates/reports/code-review.md.tmpl +201 -0
  108. package/templates/reports/sprint-report.md.tmpl +218 -0
  109. package/templates/roles/ba.md +53 -0
  110. package/templates/roles/designer.md +82 -0
  111. package/templates/roles/dev-be.md +49 -0
  112. package/templates/roles/dev-fe.md +49 -0
  113. package/templates/roles/devops.md +53 -0
  114. package/templates/roles/pm.md +49 -0
  115. package/templates/roles/qa.md +53 -0
  116. package/templates/roles/sa.md +49 -0
  117. package/templates/roles/tech-lead.md +132 -0
  118. package/templates/skills/memory/memory-status.md +78 -0
  119. package/templates/skills/memory/recall.md +160 -0
  120. package/templates/skills/memory/reflect.md +168 -0
  121. package/templates/skills/memory/remember.md +105 -0
  122. package/templates/tasks/lessons.md.tmpl +77 -0
  123. package/templates/tasks/todo.md.tmpl +53 -0
  124. package/src/commands/switch.js +0 -53
@@ -8,11 +8,14 @@ import path from 'path';
8
8
  import {
9
9
  getClaudeDir,
10
10
  getAgentDir,
11
+ getAgentFilePath,
12
+ getAgentMemoryDir,
11
13
  isInitialized,
12
14
  agentExists,
13
15
  readTemplate,
14
16
  processTemplate,
15
- copySkills
17
+ readRoleTemplate,
18
+ copyRoleRules
16
19
  } from '../utils/file-utils.js';
17
20
  import {
18
21
  resolveSkills,
@@ -22,6 +25,66 @@ import {
22
25
  } from '../utils/skill-resolver.js';
23
26
  import { runInteractiveAdd } from '../interactive/prompts.js';
24
27
 
28
+ // Role configurations
29
+ const ROLE_CONFIGS = {
30
+ 'dev-fe': {
31
+ displayName: 'Frontend Developer',
32
+ description: 'Frontend development specialist. Use for React/Vue/Angular tasks, UI implementation, component design.',
33
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
34
+ model: 'inherit',
35
+ verificationChecklist: '- [ ] Code runs, tests pass'
36
+ },
37
+ 'dev-be': {
38
+ displayName: 'Backend Developer',
39
+ description: 'Backend development specialist. Use for API design, database work, server-side logic.',
40
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
41
+ model: 'inherit',
42
+ verificationChecklist: '- [ ] Code runs, tests pass'
43
+ },
44
+ 'sa': {
45
+ displayName: 'Solution Architect',
46
+ description: 'Solution Architect specialist. Use for system design, architecture decisions, tech selection.',
47
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
48
+ model: 'inherit',
49
+ verificationChecklist: '- [ ] Architecture validated, ADRs complete'
50
+ },
51
+ 'tech-lead': {
52
+ displayName: 'Tech Lead',
53
+ description: 'Technical leadership specialist. Use for code review, mentoring, technical decisions.',
54
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
55
+ model: 'inherit',
56
+ verificationChecklist: '- [ ] Code reviewed, tests pass'
57
+ },
58
+ 'devops': {
59
+ displayName: 'DevOps Engineer',
60
+ description: 'DevOps specialist. Use for CI/CD, deployment, infrastructure.',
61
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
62
+ model: 'inherit',
63
+ verificationChecklist: '- [ ] Deployment verified'
64
+ },
65
+ 'pm': {
66
+ displayName: 'Product Manager',
67
+ description: 'Product management specialist. Use for requirements, user stories, sprint planning.',
68
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
69
+ model: 'inherit',
70
+ verificationChecklist: '- [ ] Requirements traceable, stakeholders aligned'
71
+ },
72
+ 'ba': {
73
+ displayName: 'Business Analyst',
74
+ description: 'Business analysis specialist. Use for requirements analysis, PRD creation, stakeholder communication.',
75
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
76
+ model: 'inherit',
77
+ verificationChecklist: '- [ ] Documentation accurate, acceptance criteria met'
78
+ },
79
+ 'qa': {
80
+ displayName: 'QA Engineer',
81
+ description: 'Quality assurance specialist. Use for testing, bug reporting, test automation.',
82
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
83
+ model: 'inherit',
84
+ verificationChecklist: '- [ ] Tests pass, bugs documented'
85
+ }
86
+ };
87
+
25
88
  /**
26
89
  * Add a new agent
27
90
  */
@@ -84,7 +147,8 @@ export async function addCommand(name, role, options) {
84
147
  * Create agent with given configuration
85
148
  */
86
149
  export async function createAgent(name, role, variants, projectRoot) {
87
- const agentDir = getAgentDir(name, projectRoot);
150
+ const agentFilePath = getAgentFilePath(name, projectRoot);
151
+ const agentMemoryDir = getAgentMemoryDir(name, projectRoot);
88
152
  const projectName = path.basename(projectRoot);
89
153
 
90
154
  console.log(chalk.blue('🚀 Creating agent...'));
@@ -98,9 +162,14 @@ export async function createAgent(name, role, variants, projectRoot) {
98
162
  }
99
163
  console.log('');
100
164
 
101
- // Create agent directory
102
- await fs.ensureDir(agentDir);
103
- await fs.ensureDir(path.join(agentDir, 'skills'));
165
+ // Get role config
166
+ const roleConfig = ROLE_CONFIGS[role] || {
167
+ displayName: role,
168
+ description: `${role} specialist.`,
169
+ tools: 'Read, Write, Edit, Bash, Grep, Glob',
170
+ model: 'inherit',
171
+ verificationChecklist: ''
172
+ };
104
173
 
105
174
  // Resolve skills
106
175
  console.log(chalk.blue(' Resolving skills...'));
@@ -113,46 +182,53 @@ export async function createAgent(name, role, variants, projectRoot) {
113
182
  console.log(chalk.gray(` Variant skills: ${skills.variants.join(', ')}`));
114
183
  }
115
184
 
116
- // Copy skills
117
- console.log(chalk.blue(' Copying skills...'));
118
- const copiedSkills = await copySkills(allSkills, agentDir);
119
- console.log(chalk.green(` ✓ Copied ${copiedSkills.length} skills`));
185
+ // Create agent memory directory
186
+ console.log(chalk.blue(' Creating agent memory directory...'));
187
+ await fs.ensureDir(agentMemoryDir);
188
+
189
+ // Ensure agents directory exists
190
+ await fs.ensureDir(path.dirname(agentFilePath));
191
+
192
+ // Copy role-specific rules
193
+ console.log(chalk.blue(' Copying role rules...'));
194
+ const copiedRule = await copyRoleRules(role, projectRoot);
195
+ if (copiedRule) {
196
+ console.log(chalk.green(` ✓ Copied role rules: ${copiedRule}`));
197
+ } else {
198
+ console.log(chalk.gray(' ℹ No additional role rules needed'));
199
+ }
120
200
 
121
- // Create CLAUDE.md
122
- console.log(chalk.blue(' Creating CLAUDE.md...'));
123
- await createClaudeMd(name, role, variants, skills, projectName, agentDir);
124
- console.log(chalk.green(' ✓ Created CLAUDE.md'));
201
+ // Create agent .md file
202
+ console.log(chalk.blue(' Creating agent file...'));
203
+ await createAgentMd(name, role, variants, skills, roleConfig, projectName, agentFilePath);
204
+ console.log(chalk.green(` ✓ Created ${name}.md`));
125
205
 
126
- // Create knowledge.md
206
+ // Create knowledge.md in agent-memory
127
207
  console.log(chalk.blue(' Creating knowledge.md...'));
128
- await createKnowledgeMd(name, role, agentDir);
208
+ await createKnowledgeMd(name, role, agentMemoryDir);
129
209
  console.log(chalk.green(' ✓ Created knowledge.md'));
130
210
 
131
- // Create variants.json
132
- console.log(chalk.blue(' Creating variants.json...'));
133
- await createVariantsJson(name, role, variants, skills, agentDir);
134
- console.log(chalk.green(' ✓ Created variants.json'));
135
-
136
211
  // Summary
137
212
  console.log('');
138
213
  console.log(chalk.green('✅ Agent created successfully!'));
139
214
  console.log('');
140
- console.log(chalk.blue('Agent location:'));
141
- console.log(chalk.gray(` ${agentDir}`));
215
+ console.log(chalk.blue('Agent files:'));
216
+ console.log(chalk.gray(` ${agentFilePath}`));
217
+ console.log(chalk.gray(` ${agentMemoryDir}/knowledge.md`));
142
218
  console.log('');
143
- console.log(chalk.blue('To use this agent in Claude Code:'));
144
- console.log(chalk.cyan(` npx @wipal/agent-team switch ${name}`));
219
+ console.log(chalk.blue('To use this agent:'));
220
+ console.log(chalk.cyan(` /${name} <task>`));
221
+ console.log(chalk.gray(' or Claude will auto-delegate based on task description'));
145
222
  console.log('');
146
223
  }
147
224
 
148
225
  /**
149
- * Create CLAUDE.md for agent
226
+ * Create agent .md file with frontmatter
150
227
  */
151
- async function createClaudeMd(name, role, variants, skills, projectName, agentDir) {
152
- const roleInfo = AVAILABLE_ROLES.find(r => r.name === role);
153
-
154
- // Build role skills list
155
- const roleSkillsList = skills.role.map(s => ` - ${s}`).join('\n');
228
+ async function createAgentMd(name, role, variants, skills, roleConfig, projectName, agentFilePath) {
229
+ // Build skills YAML
230
+ const allSkillsList = [...skills.core, ...skills.role, ...skills.variants];
231
+ const skillsYaml = allSkillsList.map(s => ` - ${s}`).join('\n');
156
232
 
157
233
  // Build tech stack from variants
158
234
  const techStack = Object.entries(variants)
@@ -166,27 +242,42 @@ async function createClaudeMd(name, role, variants, skills, projectName, agentDi
166
242
  .map(([k, v]) => `- ${k}: ${v}`)
167
243
  .join('\n');
168
244
 
169
- // Build skills list
170
- const skillsList = allSkills => allSkills.map(s => `- ${s}`).join('\n');
245
+ // Build skills list for display
246
+ const skillsList = allSkillsList.map(s => `- ${s}`).join('\n');
247
+
248
+ // Get role behavioral template
249
+ let roleBehavioralTemplate = '';
250
+ const roleTemplate = await readRoleTemplate(role);
251
+ if (roleTemplate) {
252
+ roleBehavioralTemplate = roleTemplate;
253
+ }
254
+
255
+ // Build role skills description
256
+ const roleSkillsDesc = skills.role.map(s => `- ${s}`).join('\n');
171
257
 
172
- const template = await readTemplate('CLAUDE.md.tmpl');
258
+ const template = await readTemplate('agent.md.tmpl');
173
259
  const content = processTemplate(template, {
174
- PROJECT_NAME: projectName,
175
260
  AGENT_NAME: name,
176
- ROLE_NAME: role,
177
- ROLE_SKILLS: roleSkillsList,
261
+ AGENT_DESCRIPTION: roleConfig.description,
262
+ AGENT_TOOLS: roleConfig.tools,
263
+ AGENT_MODEL: roleConfig.model,
264
+ AGENT_SKILLS_YAML: skillsYaml,
265
+ ROLE_DISPLAY_NAME: roleConfig.displayName,
266
+ ROLE_SKILLS: roleSkillsDesc || `- ${role} tasks`,
267
+ ROLE_BEHAVIORAL_TEMPLATE: roleBehavioralTemplate,
268
+ ROLE_VERIFICATION_CHECKLIST: roleConfig.verificationChecklist,
178
269
  TECH_STACK: techStack || '- [Configure your tech stack]',
179
270
  VARIANTS_LIST: variantsList || '- [No variants selected]',
180
- SKILLS_LIST: skillsList(getAllSkills(role, variants))
271
+ SKILLS_LIST: skillsList || '- [No skills]'
181
272
  });
182
273
 
183
- await fs.writeFile(path.join(agentDir, 'CLAUDE.md'), content);
274
+ await fs.writeFile(agentFilePath, content);
184
275
  }
185
276
 
186
277
  /**
187
278
  * Create knowledge.md for agent
188
279
  */
189
- async function createKnowledgeMd(name, role, agentDir) {
280
+ async function createKnowledgeMd(name, role, agentMemoryDir) {
190
281
  const now = new Date().toISOString();
191
282
  const template = await readTemplate('knowledge.md.tmpl');
192
283
  const content = processTemplate(template, {
@@ -196,32 +287,5 @@ async function createKnowledgeMd(name, role, agentDir) {
196
287
  DATE: now.split('T')[0]
197
288
  });
198
289
 
199
- await fs.writeFile(path.join(agentDir, 'knowledge.md'), content);
200
- }
201
-
202
- /**
203
- * Create variants.json for agent
204
- */
205
- async function createVariantsJson(name, role, variants, skills, agentDir) {
206
- const now = new Date().toISOString();
207
-
208
- const content = {
209
- agent_name: name,
210
- base_role: role,
211
- created_at: now,
212
- updated_at: now,
213
- installed_variants: variants,
214
- skills: {
215
- core: skills.core,
216
- role: skills.role,
217
- variants: skills.variants
218
- },
219
- skill_status: {
220
- last_checked: now,
221
- all_available: true,
222
- missing_skills: []
223
- }
224
- };
225
-
226
- await fs.writeJson(path.join(agentDir, 'variants.json'), content, { spaces: 2 });
290
+ await fs.writeFile(path.join(agentMemoryDir, 'knowledge.md'), content);
227
291
  }