start-vibing 1.1.2 → 1.1.3
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/package.json +1 -1
- package/template/.claude/CLAUDE.md +129 -168
- package/template/.claude/README.md +135 -126
- package/template/.claude/agents/analyzer.md +0 -14
- package/template/.claude/agents/commit-manager.md +0 -19
- package/template/.claude/agents/documenter.md +0 -10
- package/template/.claude/agents/domain-updater.md +194 -200
- package/template/.claude/agents/final-validator.md +0 -18
- package/template/.claude/agents/orchestrator.md +0 -12
- package/template/.claude/agents/quality-checker.md +0 -24
- package/template/.claude/agents/research.md +251 -262
- package/template/.claude/agents/security-auditor.md +1 -14
- package/template/.claude/agents/tester.md +0 -8
- package/template/.claude/agents/ui-ux-reviewer.md +0 -8
- package/template/.claude/commands/feature.md +48 -102
- package/template/.claude/config/README.md +30 -30
- package/template/.claude/config/domain-mapping.json +55 -26
- package/template/.claude/config/project-config.json +56 -53
- package/template/.claude/config/quality-gates.json +46 -46
- package/template/.claude/config/security-rules.json +45 -45
- package/template/.claude/config/testing-config.json +168 -168
- package/template/.claude/hooks/SETUP.md +52 -181
- package/template/.claude/hooks/user-prompt-submit.py +37 -246
- package/template/.claude/settings.json +39 -267
- package/template/.claude/skills/codebase-knowledge/SKILL.md +71 -145
- package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +54 -321
- package/template/.claude/skills/docs-tracker/SKILL.md +63 -239
- package/template/.claude/skills/final-check/SKILL.md +72 -284
- package/template/.claude/skills/quality-gate/SKILL.md +71 -278
- package/template/.claude/skills/research-cache/SKILL.md +73 -207
- package/template/.claude/skills/security-scan/SKILL.md +75 -206
- package/template/.claude/skills/test-coverage/SKILL.md +66 -441
- package/template/.claude/skills/ui-ux-audit/SKILL.md +68 -254
- package/template/.claude/hooks/post-tool-use.py +0 -155
- package/template/.claude/hooks/pre-tool-use.py +0 -159
- package/template/.claude/hooks/stop-validation.py +0 -155
- package/template/.claude/hooks/validate-commit.py +0 -200
- package/template/.claude/hooks/workflow-manager.py +0 -350
- package/template/.claude/workflow-state.schema.json +0 -200
|
@@ -1,277 +1,68 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
UserPromptSubmit Hook -
|
|
4
|
-
|
|
5
|
-
This hook runs BEFORE Claude processes any user prompt and:
|
|
6
|
-
1. Lists all available agents
|
|
7
|
-
2. Analyzes the prompt to suggest the best agent
|
|
8
|
-
3. Reminds Claude to follow the workflow strictly
|
|
9
|
-
4. Prevents over-engineering and redundant file creation
|
|
10
|
-
|
|
11
|
-
Output is sent to Claude as context before processing the user's request.
|
|
12
|
-
|
|
13
|
-
Based on official Claude Code documentation:
|
|
14
|
-
https://code.claude.com/docs/en/hooks.md
|
|
3
|
+
UserPromptSubmit Hook - Lightweight workflow guidance.
|
|
4
|
+
Provides brief context to Claude without verbose output.
|
|
15
5
|
"""
|
|
16
6
|
|
|
17
7
|
import json
|
|
18
8
|
import sys
|
|
19
|
-
import os
|
|
20
|
-
import re
|
|
21
|
-
from pathlib import Path
|
|
22
|
-
|
|
23
|
-
PROJECT_DIR = os.environ.get('CLAUDE_PROJECT_DIR', os.getcwd())
|
|
24
|
-
WORKFLOW_STATE_PATH = Path(PROJECT_DIR) / '.claude' / 'workflow-state.json'
|
|
25
|
-
SETTINGS_PATH = Path(PROJECT_DIR) / '.claude' / 'settings.json'
|
|
26
|
-
|
|
27
|
-
# Agent definitions with triggers
|
|
28
|
-
AGENTS = {
|
|
29
|
-
'orchestrator': {
|
|
30
|
-
'description': 'Coordinates entire development flow',
|
|
31
|
-
'triggers': ['implement feature', 'build', 'create', 'fix and test', 'full workflow', 'multi-step'],
|
|
32
|
-
'priority': 1,
|
|
33
|
-
'when': 'Task requires >2 agents or touches >3 files'
|
|
34
|
-
},
|
|
35
|
-
'analyzer': {
|
|
36
|
-
'description': 'Analyzes impact before code modification',
|
|
37
|
-
'triggers': ['implement', 'add feature', 'fix bug', 'refactor', 'change', 'modify', 'update code'],
|
|
38
|
-
'priority': 2,
|
|
39
|
-
'when': 'BEFORE any Edit/Write to source files'
|
|
40
|
-
},
|
|
41
|
-
'research': {
|
|
42
|
-
'description': 'Researches best practices and recent solutions (2024-2025)',
|
|
43
|
-
'triggers': ['research', 'investigate', 'study', 'best practice', 'how to', 'pattern'],
|
|
44
|
-
'priority': 3,
|
|
45
|
-
'when': 'AFTER analyzer - finds best practices before implementation'
|
|
46
|
-
},
|
|
47
|
-
'ui-ux-reviewer': {
|
|
48
|
-
'description': 'Reviews UI/UX and researches competitors',
|
|
49
|
-
'triggers': ['ui', 'component', 'page', 'design', 'layout', 'style', 'responsive', 'frontend'],
|
|
50
|
-
'priority': 3,
|
|
51
|
-
'when': 'Files in components/, app/, or .tsx with JSX'
|
|
52
|
-
},
|
|
53
|
-
'documenter': {
|
|
54
|
-
'description': 'Creates and maintains documentation',
|
|
55
|
-
'triggers': ['document', 'readme', 'docs', 'explain'],
|
|
56
|
-
'priority': 4,
|
|
57
|
-
'when': 'After code implementation completes'
|
|
58
|
-
},
|
|
59
|
-
'tester': {
|
|
60
|
-
'description': 'Creates unit tests (Vitest) and E2E tests (Playwright)',
|
|
61
|
-
'triggers': ['test', 'coverage', 'spec', 'e2e'],
|
|
62
|
-
'priority': 5,
|
|
63
|
-
'when': 'After any code implementation'
|
|
64
|
-
},
|
|
65
|
-
'security-auditor': {
|
|
66
|
-
'description': 'Audits security (CAN VETO)',
|
|
67
|
-
'triggers': ['auth', 'session', 'password', 'token', 'api', 'database', 'user data', 'security'],
|
|
68
|
-
'priority': 6,
|
|
69
|
-
'when': 'Code touches auth/, api/, server/, or sensitive data',
|
|
70
|
-
'can_veto': True
|
|
71
|
-
},
|
|
72
|
-
'quality-checker': {
|
|
73
|
-
'description': 'Runs typecheck, lint, test, build',
|
|
74
|
-
'triggers': ['check', 'verify', 'validate', 'run tests', 'quality'],
|
|
75
|
-
'priority': 7,
|
|
76
|
-
'when': 'After implementation and tests complete'
|
|
77
|
-
},
|
|
78
|
-
'final-validator': {
|
|
79
|
-
'description': 'Final validation before commit (CAN VETO)',
|
|
80
|
-
'triggers': ['final', 'commit ready', 'approve'],
|
|
81
|
-
'priority': 8,
|
|
82
|
-
'when': 'Before any commit operation',
|
|
83
|
-
'can_veto': True
|
|
84
|
-
},
|
|
85
|
-
'commit-manager': {
|
|
86
|
-
'description': 'Creates conventional commits and completes workflow',
|
|
87
|
-
'triggers': ['commit', 'save changes', 'push', 'finalize', 'git'],
|
|
88
|
-
'priority': 10,
|
|
89
|
-
'when': 'FINAL step - after domain-updater, runs complete-task'
|
|
90
|
-
},
|
|
91
|
-
'domain-updater': {
|
|
92
|
-
'description': 'Updates domain knowledge with session learnings',
|
|
93
|
-
'triggers': ['update domain', 'document learnings', 'session end'],
|
|
94
|
-
'priority': 9,
|
|
95
|
-
'when': 'BEFORE commit-manager - updates domains so git stays clean'
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
# Workflow sequences (research after analyzer, domain-updater BEFORE commit-manager for clean git)
|
|
100
|
-
WORKFLOWS = {
|
|
101
|
-
'feature': ['analyzer', 'research', 'ui-ux-reviewer', 'documenter', 'tester', 'security-auditor', 'quality-checker', 'final-validator', 'domain-updater', 'commit-manager'],
|
|
102
|
-
'fix': ['analyzer', 'research', 'tester', 'security-auditor', 'quality-checker', 'final-validator', 'domain-updater', 'commit-manager'],
|
|
103
|
-
'refactor': ['analyzer', 'tester', 'quality-checker', 'final-validator', 'domain-updater', 'commit-manager'],
|
|
104
|
-
'config': ['quality-checker', 'domain-updater', 'commit-manager']
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
def load_workflow_state():
|
|
109
|
-
"""Load current workflow state"""
|
|
110
|
-
if not WORKFLOW_STATE_PATH.exists():
|
|
111
|
-
return None
|
|
112
|
-
try:
|
|
113
|
-
with open(WORKFLOW_STATE_PATH) as f:
|
|
114
|
-
return json.load(f)
|
|
115
|
-
except (json.JSONDecodeError, IOError):
|
|
116
|
-
return None
|
|
117
|
-
|
|
118
9
|
|
|
119
10
|
def detect_task_type(prompt: str) -> str:
|
|
120
|
-
"""Detect task type from prompt"""
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if any(word in prompt_lower for word in ['bug', 'fix', 'error', 'broken', 'not working', 'issue']):
|
|
11
|
+
"""Detect task type from prompt."""
|
|
12
|
+
p = prompt.lower()
|
|
13
|
+
if any(w in p for w in ['bug', 'fix', 'error', 'broken', 'issue']):
|
|
124
14
|
return 'fix'
|
|
125
|
-
|
|
15
|
+
if any(w in p for w in ['refactor', 'restructure', 'clean up']):
|
|
126
16
|
return 'refactor'
|
|
127
|
-
|
|
17
|
+
if any(w in p for w in ['config', 'setting', '.env', 'package.json']):
|
|
128
18
|
return 'config'
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return 'orchestrator', 'Multi-step task detected - orchestrator will coordinate all agents'
|
|
141
|
-
|
|
142
|
-
# Check each agent's triggers
|
|
143
|
-
matches = []
|
|
144
|
-
for agent_name, agent_info in AGENTS.items():
|
|
145
|
-
for trigger in agent_info['triggers']:
|
|
146
|
-
if trigger in prompt_lower:
|
|
147
|
-
matches.append((agent_name, agent_info['priority'], trigger))
|
|
148
|
-
|
|
149
|
-
if matches:
|
|
150
|
-
# Sort by priority (lower is better)
|
|
151
|
-
matches.sort(key=lambda x: x[1])
|
|
152
|
-
best = matches[0]
|
|
153
|
-
return best[0], f"Matched trigger '{best[2]}'"
|
|
154
|
-
|
|
155
|
-
# Default to orchestrator for unknown tasks
|
|
156
|
-
return 'orchestrator', 'No specific trigger matched - orchestrator will analyze'
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def format_agent_list() -> str:
|
|
160
|
-
"""Format agent list for display"""
|
|
161
|
-
lines = []
|
|
162
|
-
for name, info in sorted(AGENTS.items(), key=lambda x: x[1]['priority']):
|
|
163
|
-
veto = ' [CAN VETO]' if info.get('can_veto') else ''
|
|
164
|
-
lines.append(f" - {name}: {info['description']}{veto}")
|
|
165
|
-
return '\n'.join(lines)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
def format_workflow_status(state: dict) -> str:
|
|
169
|
-
"""Format current workflow status"""
|
|
170
|
-
if not state or not state.get('currentTask'):
|
|
171
|
-
return "STATUS: No active task. Start with orchestrator or workflow-manager.py start-task"
|
|
172
|
-
|
|
173
|
-
task = state['currentTask']
|
|
174
|
-
agents = task.get('agents', {})
|
|
175
|
-
|
|
176
|
-
executed = [name for name, status in agents.items() if status.get('executed')]
|
|
177
|
-
pending = [name for name, status in agents.items() if not status.get('executed')]
|
|
178
|
-
|
|
179
|
-
return f"""STATUS: Task active
|
|
180
|
-
ID: {task.get('id', 'unknown')}
|
|
181
|
-
Type: {task.get('type', 'unknown')}
|
|
182
|
-
Description: {task.get('description', 'unknown')}
|
|
183
|
-
Executed: {', '.join(executed) if executed else 'none'}
|
|
184
|
-
Pending: {', '.join(pending) if pending else 'none'}
|
|
185
|
-
Approved files: {len(task.get('approvedFiles', []))}"""
|
|
186
|
-
|
|
19
|
+
return 'feature'
|
|
20
|
+
|
|
21
|
+
def get_workflow(task_type: str) -> list:
|
|
22
|
+
"""Get workflow for task type."""
|
|
23
|
+
workflows = {
|
|
24
|
+
'feature': ['commit-manager:branch', 'analyzer', 'research', 'implement', 'tester', 'quality-checker', 'domain-updater', 'commit-manager:commit'],
|
|
25
|
+
'fix': ['commit-manager:branch', 'analyzer', 'implement', 'tester', 'quality-checker', 'domain-updater', 'commit-manager:commit'],
|
|
26
|
+
'refactor': ['commit-manager:branch', 'analyzer', 'implement', 'tester', 'quality-checker', 'domain-updater', 'commit-manager:commit'],
|
|
27
|
+
'config': ['quality-checker', 'commit-manager:commit']
|
|
28
|
+
}
|
|
29
|
+
return workflows.get(task_type, workflows['feature'])
|
|
187
30
|
|
|
188
31
|
def main():
|
|
189
|
-
# Read hook input from stdin
|
|
190
32
|
try:
|
|
191
33
|
hook_input = json.load(sys.stdin)
|
|
192
34
|
except json.JSONDecodeError:
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
# Get user prompt (may not be available in all hook contexts)
|
|
196
|
-
prompt = hook_input.get('user_prompt', hook_input.get('prompt', ''))
|
|
197
|
-
|
|
198
|
-
# Load current state
|
|
199
|
-
state = load_workflow_state()
|
|
200
|
-
|
|
201
|
-
# Detect task type and best agent
|
|
202
|
-
task_type = detect_task_type(prompt) if prompt else 'unknown'
|
|
203
|
-
best_agent, reason = detect_best_agent(prompt) if prompt else ('orchestrator', 'Default')
|
|
35
|
+
sys.exit(0)
|
|
204
36
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
WORKFLOW ENFORCEMENT - UserPromptSubmit Hook
|
|
209
|
-
================================================================================
|
|
37
|
+
prompt = hook_input.get('prompt', '')
|
|
38
|
+
if not prompt:
|
|
39
|
+
sys.exit(0)
|
|
210
40
|
|
|
211
|
-
|
|
212
|
-
|
|
41
|
+
task_type = detect_task_type(prompt)
|
|
42
|
+
workflow = get_workflow(task_type)
|
|
213
43
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
Reason: {reason}
|
|
218
|
-
Workflow sequence: {' -> '.join(WORKFLOWS.get(task_type, WORKFLOWS['feature']))}
|
|
44
|
+
# Compact context for Claude
|
|
45
|
+
context = f"""Task: {task_type}
|
|
46
|
+
Workflow: {' → '.join(workflow)}
|
|
219
47
|
|
|
220
|
-
|
|
48
|
+
Rules:
|
|
49
|
+
- START: commit-manager creates feature branch
|
|
50
|
+
- IMPLEMENT: follow workflow sequence
|
|
51
|
+
- UPDATE: domain-updater before commit
|
|
52
|
+
- END: commit-manager commits and merges to main
|
|
221
53
|
|
|
222
|
-
|
|
223
|
-
CRITICAL: INVOKE AGENTS VIA TASK TOOL - NOT MANUALLY
|
|
224
|
-
================================================================================
|
|
54
|
+
Agents: analyzer, research, tester, quality-checker, security-auditor, documenter, ui-ux-reviewer, domain-updater, commit-manager"""
|
|
225
55
|
|
|
226
|
-
You MUST use the Task tool with subagent_type to invoke agents.
|
|
227
|
-
DO NOT execute agent logic manually - INVOKE the agent properly.
|
|
228
|
-
|
|
229
|
-
AGENTS THAT CAN BE INVOKED VIA TASK TOOL:
|
|
230
|
-
- commit-manager: Use Task(subagent_type="commit-manager", prompt="...")
|
|
231
|
-
- analyzer: Use Task(subagent_type="analyzer", prompt="...")
|
|
232
|
-
- tester: Use Task(subagent_type="tester", prompt="...")
|
|
233
|
-
- security-auditor: Use Task(subagent_type="security-auditor", prompt="...")
|
|
234
|
-
- quality-checker: Use Task(subagent_type="quality-checker", prompt="...")
|
|
235
|
-
- final-validator: Use Task(subagent_type="final-validator", prompt="...")
|
|
236
|
-
- documenter: Use Task(subagent_type="documenter", prompt="...")
|
|
237
|
-
- ui-ux-reviewer: Use Task(subagent_type="ui-ux-reviewer", prompt="...")
|
|
238
|
-
- orchestrator: Use Task(subagent_type="orchestrator", prompt="...")
|
|
239
|
-
|
|
240
|
-
WRONG (manual execution):
|
|
241
|
-
"Let me create the commit..." then git commands directly
|
|
242
|
-
|
|
243
|
-
CORRECT (agent invocation):
|
|
244
|
-
Use Task tool with subagent_type="commit-manager"
|
|
245
|
-
|
|
246
|
-
================================================================================
|
|
247
|
-
MANDATORY RULES:
|
|
248
|
-
================================================================================
|
|
249
|
-
|
|
250
|
-
1. I WILL use Task tool to invoke agent: {best_agent}
|
|
251
|
-
2. I WILL NOT execute agent logic manually - ALWAYS invoke via Task tool
|
|
252
|
-
3. I WILL NOT create redundant files
|
|
253
|
-
4. I WILL NOT over-engineer - keep solutions simple and focused
|
|
254
|
-
5. I WILL follow the workflow sequence strictly
|
|
255
|
-
6. I MUST run analyzer BEFORE any Edit/Write to source files
|
|
256
|
-
7. I MUST run commit-manager via Task tool for ALL commits
|
|
257
|
-
8. After commit, I MUST update domains and run complete-task
|
|
258
|
-
|
|
259
|
-
WORKFLOW COMMANDS (for tracking, not replacement for agents):
|
|
260
|
-
Start task: python .claude/hooks/workflow-manager.py start-task --type {task_type} --description "..."
|
|
261
|
-
Approve files: python .claude/hooks/workflow-manager.py approve-files --files "path/to/file"
|
|
262
|
-
|
|
263
|
-
================================================================================
|
|
264
|
-
"""
|
|
265
|
-
|
|
266
|
-
# Return as JSON with decision to continue
|
|
267
56
|
result = {
|
|
268
57
|
"continue": True,
|
|
269
|
-
"
|
|
58
|
+
"hookSpecificOutput": {
|
|
59
|
+
"hookEventName": "UserPromptSubmit",
|
|
60
|
+
"additionalContext": context
|
|
61
|
+
}
|
|
270
62
|
}
|
|
271
63
|
|
|
272
64
|
print(json.dumps(result))
|
|
273
65
|
sys.exit(0)
|
|
274
66
|
|
|
275
|
-
|
|
276
67
|
if __name__ == '__main__':
|
|
277
68
|
main()
|
|
@@ -1,269 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"lib",
|
|
42
|
-
"server",
|
|
43
|
-
"tests",
|
|
44
|
-
"docs",
|
|
45
|
-
"types",
|
|
46
|
-
".claude"
|
|
47
|
-
],
|
|
48
|
-
"protected_files": [".env", ".env.local", ".env.production", "bun.lockb"],
|
|
49
|
-
"allow": [
|
|
50
|
-
"Bash(bun run typecheck:*)",
|
|
51
|
-
"Bash(git add:*)",
|
|
52
|
-
"Bash(git commit:*)",
|
|
53
|
-
"Bash(python .claude/hooks/*)"
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
"hooks": {
|
|
58
|
-
"UserPromptSubmit": [
|
|
59
|
-
{
|
|
60
|
-
"matcher": "",
|
|
61
|
-
"hooks": [
|
|
62
|
-
{
|
|
63
|
-
"type": "command",
|
|
64
|
-
"command": "python .claude/hooks/user-prompt-submit.py",
|
|
65
|
-
"timeout": 10
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
"PreToolUse": [
|
|
71
|
-
{
|
|
72
|
-
"matcher": "Edit|Write|NotebookEdit",
|
|
73
|
-
"hooks": [
|
|
74
|
-
{
|
|
75
|
-
"type": "command",
|
|
76
|
-
"command": "python .claude/hooks/pre-tool-use.py",
|
|
77
|
-
"timeout": 5
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
],
|
|
82
|
-
"PostToolUse": [
|
|
83
|
-
{
|
|
84
|
-
"matcher": "Edit|Write|NotebookEdit",
|
|
85
|
-
"hooks": [
|
|
86
|
-
{
|
|
87
|
-
"type": "command",
|
|
88
|
-
"command": "python .claude/hooks/post-tool-use.py",
|
|
89
|
-
"timeout": 5
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
],
|
|
94
|
-
"Stop": [
|
|
95
|
-
{
|
|
96
|
-
"matcher": "",
|
|
97
|
-
"hooks": [
|
|
98
|
-
{
|
|
99
|
-
"type": "command",
|
|
100
|
-
"command": "python .claude/hooks/stop-validation.py",
|
|
101
|
-
"timeout": 10
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
"agents": {
|
|
109
|
-
"orchestrator": {
|
|
110
|
-
"file": "agents/orchestrator.md",
|
|
111
|
-
"description": "Coordena todo o fluxo de desenvolvimento",
|
|
112
|
-
"priority": 1
|
|
113
|
-
},
|
|
114
|
-
"analyzer": {
|
|
115
|
-
"file": "agents/analyzer.md",
|
|
116
|
-
"description": "Analisa impacto de mudancas",
|
|
117
|
-
"priority": 2
|
|
118
|
-
},
|
|
119
|
-
"research": {
|
|
120
|
-
"file": "agents/research.md",
|
|
121
|
-
"description": "Pesquisa best practices e solucoes recentes (2024-2025) antes da implementacao",
|
|
122
|
-
"priority": 3
|
|
123
|
-
},
|
|
124
|
-
"documenter": {
|
|
125
|
-
"file": "agents/documenter.md",
|
|
126
|
-
"description": "Cria e mantem documentacao",
|
|
127
|
-
"priority": 3
|
|
128
|
-
},
|
|
129
|
-
"tester": {
|
|
130
|
-
"file": "agents/tester.md",
|
|
131
|
-
"description": "Cria e executa testes",
|
|
132
|
-
"priority": 4
|
|
133
|
-
},
|
|
134
|
-
"security-auditor": {
|
|
135
|
-
"file": "agents/security-auditor.md",
|
|
136
|
-
"description": "Audita seguranca do codigo",
|
|
137
|
-
"priority": 5,
|
|
138
|
-
"can_veto": true
|
|
139
|
-
},
|
|
140
|
-
"ui-ux-reviewer": {
|
|
141
|
-
"file": "agents/ui-ux-reviewer.md",
|
|
142
|
-
"description": "Revisa UI/UX e pesquisa competidores",
|
|
143
|
-
"priority": 6
|
|
144
|
-
},
|
|
145
|
-
"quality-checker": {
|
|
146
|
-
"file": "agents/quality-checker.md",
|
|
147
|
-
"description": "Verifica qualidade (typecheck, lint, build)",
|
|
148
|
-
"priority": 7
|
|
149
|
-
},
|
|
150
|
-
"final-validator": {
|
|
151
|
-
"file": "agents/final-validator.md",
|
|
152
|
-
"description": "Validacao final antes do commit",
|
|
153
|
-
"priority": 8,
|
|
154
|
-
"can_veto": true
|
|
155
|
-
},
|
|
156
|
-
"commit-manager": {
|
|
157
|
-
"file": "agents/commit-manager.md",
|
|
158
|
-
"description": "Manages commits and workflow state tracking",
|
|
159
|
-
"priority": 9
|
|
160
|
-
},
|
|
161
|
-
"domain-updater": {
|
|
162
|
-
"file": "agents/domain-updater.md",
|
|
163
|
-
"description": "Updates domain documentation with session learnings and problems solved. FINAL step after commit.",
|
|
164
|
-
"priority": 10
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
"workflow": {
|
|
169
|
-
"default_flow": [
|
|
170
|
-
"analyzer",
|
|
171
|
-
"research",
|
|
172
|
-
"ui-ux-reviewer",
|
|
173
|
-
"documenter",
|
|
174
|
-
"tester",
|
|
175
|
-
"security-auditor",
|
|
176
|
-
"quality-checker",
|
|
177
|
-
"final-validator",
|
|
178
|
-
"domain-updater",
|
|
179
|
-
"commit-manager"
|
|
180
|
-
],
|
|
181
|
-
"bug_fix_flow": [
|
|
182
|
-
"analyzer",
|
|
183
|
-
"research",
|
|
184
|
-
"tester",
|
|
185
|
-
"security-auditor",
|
|
186
|
-
"quality-checker",
|
|
187
|
-
"final-validator",
|
|
188
|
-
"domain-updater",
|
|
189
|
-
"commit-manager"
|
|
190
|
-
],
|
|
191
|
-
"refactor_flow": [
|
|
192
|
-
"analyzer",
|
|
193
|
-
"tester",
|
|
194
|
-
"security-auditor",
|
|
195
|
-
"quality-checker",
|
|
196
|
-
"final-validator",
|
|
197
|
-
"domain-updater",
|
|
198
|
-
"commit-manager"
|
|
199
|
-
],
|
|
200
|
-
"config_flow": ["quality-checker", "domain-updater", "commit-manager"]
|
|
201
|
-
},
|
|
202
|
-
|
|
203
|
-
"rules": {
|
|
204
|
-
"research": {
|
|
205
|
-
"required_before_implementation": true,
|
|
206
|
-
"sources_must_be_recent": "2024-2025",
|
|
207
|
-
"must_document_findings": true,
|
|
208
|
-
"must_cite_sources": true
|
|
209
|
-
},
|
|
210
|
-
"typescript": {
|
|
211
|
-
"strict": true,
|
|
212
|
-
"no_any": true,
|
|
213
|
-
"explicit_return_types": true
|
|
214
|
-
},
|
|
215
|
-
"security": {
|
|
216
|
-
"user_id_from_session_only": true,
|
|
217
|
-
"sanitize_all_responses": true,
|
|
218
|
-
"zod_validation_required": true,
|
|
219
|
-
"explicit_select_required": true,
|
|
220
|
-
"owasp_validation_required": true,
|
|
221
|
-
"cve_check_required": true
|
|
222
|
-
},
|
|
223
|
-
"ux": {
|
|
224
|
-
"skeleton_required_for_async": true,
|
|
225
|
-
"touch_friendly_min_size": "44px",
|
|
226
|
-
"competitor_research_required": true,
|
|
227
|
-
"wcag_compliance_required": true
|
|
228
|
-
},
|
|
229
|
-
"testing": {
|
|
230
|
-
"unit_tests_required": true,
|
|
231
|
-
"e2e_for_ui_features": true,
|
|
232
|
-
"data_testid_required": true,
|
|
233
|
-
"edge_cases_research_required": true
|
|
234
|
-
},
|
|
235
|
-
"documentation": {
|
|
236
|
-
"flow_docs_required": true,
|
|
237
|
-
"competitor_research_for_ui": true,
|
|
238
|
-
"research_must_be_documented": true
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
"quality_gates": {
|
|
243
|
-
"typecheck": {
|
|
244
|
-
"command": "bun run typecheck",
|
|
245
|
-
"required": true,
|
|
246
|
-
"blocking": true
|
|
247
|
-
},
|
|
248
|
-
"lint": {
|
|
249
|
-
"command": "bun run lint",
|
|
250
|
-
"required": true,
|
|
251
|
-
"blocking": true
|
|
252
|
-
},
|
|
253
|
-
"test": {
|
|
254
|
-
"command": "bun run test",
|
|
255
|
-
"required": true,
|
|
256
|
-
"blocking": true
|
|
257
|
-
},
|
|
258
|
-
"test_e2e": {
|
|
259
|
-
"command": "bun run test:e2e",
|
|
260
|
-
"required": "when_ui_changes",
|
|
261
|
-
"blocking": true
|
|
262
|
-
},
|
|
263
|
-
"build": {
|
|
264
|
-
"command": "bun run build",
|
|
265
|
-
"required": true,
|
|
266
|
-
"blocking": true
|
|
267
|
-
}
|
|
268
|
-
}
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(bun run typecheck:*)",
|
|
5
|
+
"Bash(bun run lint:*)",
|
|
6
|
+
"Bash(bun run test:*)",
|
|
7
|
+
"Bash(bun run build)",
|
|
8
|
+
"Bash(git add:*)",
|
|
9
|
+
"Bash(git commit:*)",
|
|
10
|
+
"Bash(git status)",
|
|
11
|
+
"Bash(git diff:*)",
|
|
12
|
+
"Bash(git log:*)",
|
|
13
|
+
"Bash(python .claude/hooks/*)",
|
|
14
|
+
"Bash(cat:*)",
|
|
15
|
+
"Bash(bunx:*)",
|
|
16
|
+
"Bash(docker compose:*)"
|
|
17
|
+
],
|
|
18
|
+
"deny": [
|
|
19
|
+
"Bash(rm -rf /)",
|
|
20
|
+
"Bash(sudo:*)",
|
|
21
|
+
"Bash(chmod 777:*)"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
"hooks": {
|
|
26
|
+
"UserPromptSubmit": [
|
|
27
|
+
{
|
|
28
|
+
"matcher": "",
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "command",
|
|
32
|
+
"command": "python .claude/hooks/user-prompt-submit.py",
|
|
33
|
+
"timeout": 10
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"disableAllHooks": false
|
|
269
41
|
}
|