aircana 2.0.0.rc1 → 2.0.0.rc2
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.
- checksums.yaml +4 -4
- data/.rspec_status +191 -191
- data/README.md +103 -1
- data/lib/aircana/cli/commands/generate.rb +8 -2
- data/lib/aircana/generators/apply_feedback_command_generator.rb +26 -0
- data/lib/aircana/generators/{write_plan_command_generator.rb → execute_command_generator.rb} +3 -3
- data/lib/aircana/generators/record_command_generator.rb +26 -0
- data/lib/aircana/generators/review_command_generator.rb +26 -0
- data/lib/aircana/templates/agents/defaults/apply_feedback.erb +91 -0
- data/lib/aircana/templates/agents/defaults/executor.erb +84 -0
- data/lib/aircana/templates/agents/defaults/planner.erb +44 -18
- data/lib/aircana/templates/agents/defaults/reviewer.erb +94 -0
- data/lib/aircana/templates/commands/apply_feedback.erb +17 -0
- data/lib/aircana/templates/commands/execute.erb +15 -0
- data/lib/aircana/templates/commands/plan.erb +21 -14
- data/lib/aircana/templates/commands/review.erb +14 -0
- data/lib/aircana/version.rb +1 -1
- metadata +12 -3
- /data/lib/aircana/templates/commands/{write_plan.erb → record.erb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7dcf887b992fec745661b8a572ed862262484d34da96b76463e01e33be7a219
|
4
|
+
data.tar.gz: b7976487a2341c9f57c9d14fb4653aa4b1eedea4948407834e2e288e49809f97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eea7f918a959f3c5e0e85c991d99b1aab5af27d81cee79adf63599dad5286dfc819c3b24fe8a955eca008824edf5232fd2418bdd89d5b146487a28549834c0fa
|
7
|
+
data.tar.gz: 6168c0065c8d10e961ea89a1048888b4a106b39a6d184f323d7530fb3e34ed9f9d511e06af1c608473395297ea38f71814c4c0771bd7d9b6cb5b3b20b3a1477a
|
data/.rspec_status
CHANGED
@@ -1,191 +1,191 @@
|
|
1
|
-
example_id
|
2
|
-
|
3
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1]
|
4
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2]
|
5
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3]
|
6
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:2:1]
|
7
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1]
|
8
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2]
|
9
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:1]
|
10
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:2]
|
11
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:3:1]
|
12
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:2:1]
|
13
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:3:1]
|
14
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:4:1]
|
15
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:3:1]
|
16
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:3:2]
|
17
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:3:3]
|
18
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:4:1]
|
19
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:5:1:1]
|
20
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:5:2:1]
|
21
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:1]
|
22
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:2]
|
23
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:3]
|
24
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:1:1:1]
|
25
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:1:1]
|
26
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:2:1]
|
27
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:2:1:1]
|
28
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:2:2:1]
|
29
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:3:1:1]
|
30
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:3:2:1]
|
31
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:4:1]
|
32
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:4:2:1]
|
33
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:5:1:1]
|
34
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:5:2:1]
|
35
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:5:3:1]
|
36
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:5:4:1]
|
37
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:6:1:1]
|
38
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:6:2:1]
|
39
|
-
./spec/aircana/cli/commands/hooks_spec.rb[1:7:1]
|
40
|
-
./spec/aircana/cli/commands/install_spec.rb[1:1:1]
|
41
|
-
./spec/aircana/cli/commands/install_spec.rb[1:1:2]
|
42
|
-
./spec/aircana/cli/commands/install_spec.rb[1:2:1:1]
|
43
|
-
./spec/aircana/cli/commands/install_spec.rb[1:2:2:1]
|
44
|
-
./spec/aircana/cli/commands/install_spec.rb[1:2:3:1]
|
45
|
-
./spec/aircana/cli/commands/install_spec.rb[1:2:4:1]
|
46
|
-
./spec/aircana/cli/commands/install_spec.rb[1:3:1]
|
47
|
-
./spec/aircana/cli/commands/install_spec.rb[1:3:2:1]
|
48
|
-
./spec/aircana/cli/commands/install_spec.rb[1:3:3:1]
|
49
|
-
./spec/aircana/cli/commands/install_spec.rb[1:3:4:1]
|
50
|
-
./spec/aircana/cli/commands/install_spec.rb[1:4:1]
|
51
|
-
./spec/aircana/cli/commands/install_spec.rb[1:4:2]
|
52
|
-
./spec/aircana/cli/commands/install_spec.rb[1:4:3]
|
53
|
-
./spec/aircana/cli/commands/install_spec.rb[1:4:4]
|
54
|
-
./spec/aircana/cli/commands/install_spec.rb[1:4:5]
|
55
|
-
./spec/aircana/cli/commands/install_spec.rb[1:5:1:1]
|
56
|
-
./spec/aircana/cli/commands/install_spec.rb[1:5:2:1]
|
57
|
-
./spec/aircana/cli/commands/install_spec.rb[1:5:3:1]
|
58
|
-
./spec/aircana/cli/commands/install_spec.rb[1:6:1]
|
59
|
-
./spec/aircana/configuration_spec.rb[1:1:1]
|
60
|
-
./spec/aircana/configuration_spec.rb[1:2:1]
|
61
|
-
./spec/aircana/configuration_spec.rb[1:3:1]
|
62
|
-
./spec/aircana/configuration_spec.rb[1:4:1]
|
63
|
-
./spec/aircana/configuration_spec.rb[1:4:2]
|
64
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1]
|
65
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2]
|
66
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3]
|
67
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1]
|
68
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2]
|
69
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3]
|
70
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1]
|
71
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2]
|
72
|
-
./spec/aircana/contexts/local_spec.rb[1:1:1]
|
73
|
-
./spec/aircana/contexts/local_spec.rb[1:1:2]
|
74
|
-
./spec/aircana/contexts/local_spec.rb[1:1:3]
|
75
|
-
./spec/aircana/contexts/local_spec.rb[1:1:4]
|
76
|
-
./spec/aircana/contexts/local_spec.rb[1:1:5]
|
77
|
-
./spec/aircana/contexts/local_spec.rb[1:1:6]
|
78
|
-
./spec/aircana/contexts/local_spec.rb[1:1:7]
|
79
|
-
./spec/aircana/contexts/local_spec.rb[1:1:8]
|
80
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:1]
|
81
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:2]
|
82
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:1]
|
83
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:2]
|
84
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:1]
|
85
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:2]
|
86
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:3]
|
87
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:4]
|
88
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:1]
|
89
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:2]
|
90
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:1]
|
91
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:2]
|
92
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:1]
|
93
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:2]
|
94
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:3]
|
95
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:4]
|
96
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:5]
|
97
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:6]
|
98
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:7]
|
99
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:8]
|
100
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:9]
|
101
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:10]
|
102
|
-
./spec/aircana/contexts/web_spec.rb[1:1:1]
|
103
|
-
./spec/aircana/contexts/web_spec.rb[1:2:1]
|
104
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:1]
|
105
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:2]
|
106
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:3]
|
107
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:1]
|
108
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:2]
|
109
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:1]
|
110
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:2]
|
111
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:3]
|
112
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:4]
|
113
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:5]
|
114
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:1]
|
115
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:2]
|
116
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:3]
|
117
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:1]
|
118
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:2]
|
119
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:3]
|
120
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:1]
|
121
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:2]
|
122
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:3]
|
123
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:1]
|
124
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:2]
|
125
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:1]
|
126
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:2]
|
127
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:3]
|
128
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:2:1]
|
129
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:3:1]
|
130
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:1]
|
131
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:2]
|
132
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:3]
|
133
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:1]
|
134
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:2]
|
135
|
-
./spec/aircana/generators/agents_generator_spec.rb[1:1:1]
|
136
|
-
./spec/aircana/generators/agents_generator_spec.rb[1:2:1]
|
137
|
-
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:1]
|
138
|
-
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:2]
|
139
|
-
./spec/aircana/generators/agents_generator_spec.rb[1:4:1:1]
|
140
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1]
|
141
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1]
|
142
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1]
|
143
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2]
|
144
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1]
|
145
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1]
|
146
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1]
|
147
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1]
|
148
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1]
|
149
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1]
|
150
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2]
|
151
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3]
|
152
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1]
|
153
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2]
|
154
|
-
./spec/aircana/generators/
|
155
|
-
./spec/aircana/generators/
|
156
|
-
./spec/aircana/generators/
|
157
|
-
./spec/aircana/human_logger_spec.rb[1:1:1]
|
158
|
-
./spec/aircana/human_logger_spec.rb[1:2:1]
|
159
|
-
./spec/aircana/human_logger_spec.rb[1:3:1]
|
160
|
-
./spec/aircana/human_logger_spec.rb[1:4:1]
|
161
|
-
./spec/aircana/human_logger_spec.rb[1:5:1]
|
162
|
-
./spec/aircana/human_logger_spec.rb[1:5:2]
|
163
|
-
./spec/aircana/human_logger_spec.rb[1:5:3]
|
164
|
-
./spec/aircana/human_logger_spec.rb[1:5:4]
|
165
|
-
./spec/aircana/human_logger_spec.rb[1:5:5]
|
166
|
-
./spec/aircana/human_logger_spec.rb[1:5:6]
|
167
|
-
./spec/aircana/human_logger_spec.rb[1:5:7]
|
168
|
-
./spec/aircana/human_logger_spec.rb[1:6:1]
|
169
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1]
|
170
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2]
|
171
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3]
|
172
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4]
|
173
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1]
|
174
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2]
|
175
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1]
|
176
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:1]
|
177
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:2]
|
178
|
-
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1]
|
179
|
-
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2]
|
180
|
-
./spec/aircana/system_checker_spec.rb[1:1:1:1]
|
181
|
-
./spec/aircana/system_checker_spec.rb[1:1:2:1]
|
182
|
-
./spec/aircana/system_checker_spec.rb[1:1:3:1]
|
183
|
-
./spec/aircana/system_checker_spec.rb[1:2:1]
|
184
|
-
./spec/aircana/system_checker_spec.rb[1:2:2]
|
185
|
-
./spec/aircana/system_checker_spec.rb[1:3:1]
|
186
|
-
./spec/aircana/system_checker_spec.rb[1:3:2]
|
187
|
-
./spec/aircana/system_checker_spec.rb[1:3:3]
|
188
|
-
./spec/aircana/system_checker_spec.rb[1:3:4]
|
189
|
-
./spec/aircana/system_checker_spec.rb[1:3:5]
|
190
|
-
./spec/aircana_spec.rb[1:1]
|
191
|
-
./spec/aircana_spec.rb[1:2]
|
1
|
+
example_id | status | run_time |
|
2
|
+
----------------------------------------------------------------- | ------ | --------------- |
|
3
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1] | passed | 0.02328 seconds |
|
4
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2] | passed | 0.00053 seconds |
|
5
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3] | passed | 0.00034 seconds |
|
6
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:2:1] | passed | 0.00129 seconds |
|
7
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1] | passed | 0.00038 seconds |
|
8
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2] | passed | 0.00033 seconds |
|
9
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:1] | passed | 0.00048 seconds |
|
10
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:2] | passed | 0.00045 seconds |
|
11
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:1:3:1] | passed | 0.00049 seconds |
|
12
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:2:1] | passed | 0.00036 seconds |
|
13
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:3:1] | passed | 0.00036 seconds |
|
14
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:4:1] | passed | 0.0004 seconds |
|
15
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:3:1] | passed | 0.00101 seconds |
|
16
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:3:2] | passed | 0.00153 seconds |
|
17
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:3:3] | passed | 0.00093 seconds |
|
18
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:4:1] | passed | 0.00027 seconds |
|
19
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:5:1:1] | passed | 0.00036 seconds |
|
20
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:5:2:1] | passed | 0.00066 seconds |
|
21
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:1] | passed | 0.00089 seconds |
|
22
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:2] | passed | 0.00083 seconds |
|
23
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:5:3:3] | passed | 0.00079 seconds |
|
24
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:1:1] | passed | 0.00123 seconds |
|
25
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:1:1] | passed | 0.00098 seconds |
|
26
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:2:1] | passed | 0.00145 seconds |
|
27
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:2:1:1] | passed | 0.00077 seconds |
|
28
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:2:2:1] | passed | 0.00088 seconds |
|
29
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:3:1:1] | passed | 0.00075 seconds |
|
30
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:3:2:1] | passed | 0.00178 seconds |
|
31
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:4:1] | passed | 0.00418 seconds |
|
32
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:4:2:1] | passed | 0.0017 seconds |
|
33
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:1:1] | passed | 0.00067 seconds |
|
34
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:2:1] | passed | 0.00091 seconds |
|
35
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:3:1] | passed | 0.00149 seconds |
|
36
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:4:1] | passed | 0.00108 seconds |
|
37
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:6:1:1] | passed | 0.0007 seconds |
|
38
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:6:2:1] | passed | 0.0024 seconds |
|
39
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:7:1] | passed | 0.00067 seconds |
|
40
|
+
./spec/aircana/cli/commands/install_spec.rb[1:1:1] | passed | 0.00258 seconds |
|
41
|
+
./spec/aircana/cli/commands/install_spec.rb[1:1:2] | passed | 0.00206 seconds |
|
42
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:1:1] | passed | 0.01198 seconds |
|
43
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:2:1] | passed | 0.00669 seconds |
|
44
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:3:1] | passed | 0.00602 seconds |
|
45
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:4:1] | passed | 0.01396 seconds |
|
46
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:1] | passed | 0.0036 seconds |
|
47
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:2:1] | passed | 0.00293 seconds |
|
48
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:3:1] | passed | 0.00367 seconds |
|
49
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:4:1] | passed | 0.0034 seconds |
|
50
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:1] | passed | 0.00099 seconds |
|
51
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:2] | passed | 0.00092 seconds |
|
52
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:3] | passed | 0.00118 seconds |
|
53
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:4] | passed | 0.00109 seconds |
|
54
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:5] | passed | 0.00094 seconds |
|
55
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:1:1] | passed | 0.00115 seconds |
|
56
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:2:1] | passed | 0.00107 seconds |
|
57
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:3:1] | passed | 0.00168 seconds |
|
58
|
+
./spec/aircana/cli/commands/install_spec.rb[1:6:1] | passed | 0.00153 seconds |
|
59
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00022 seconds |
|
60
|
+
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00016 seconds |
|
61
|
+
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00011 seconds |
|
62
|
+
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00011 seconds |
|
63
|
+
./spec/aircana/configuration_spec.rb[1:4:2] | passed | 0.0001 seconds |
|
64
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00415 seconds |
|
65
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00058 seconds |
|
66
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00157 seconds |
|
67
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00017 seconds |
|
68
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00013 seconds |
|
69
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00012 seconds |
|
70
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00037 seconds |
|
71
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00057 seconds |
|
72
|
+
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00154 seconds |
|
73
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00125 seconds |
|
74
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00122 seconds |
|
75
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00126 seconds |
|
76
|
+
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00122 seconds |
|
77
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00144 seconds |
|
78
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00221 seconds |
|
79
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00154 seconds |
|
80
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.0012 seconds |
|
81
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00125 seconds |
|
82
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00119 seconds |
|
83
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00103 seconds |
|
84
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00101 seconds |
|
85
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00023 seconds |
|
86
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00098 seconds |
|
87
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.0012 seconds |
|
88
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00106 seconds |
|
89
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00024 seconds |
|
90
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00135 seconds |
|
91
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00023 seconds |
|
92
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00024 seconds |
|
93
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00021 seconds |
|
94
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.0002 seconds |
|
95
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00039 seconds |
|
96
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00038 seconds |
|
97
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00033 seconds |
|
98
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00028 seconds |
|
99
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00114 seconds |
|
100
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00133 seconds |
|
101
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00123 seconds |
|
102
|
+
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00022 seconds |
|
103
|
+
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00019 seconds |
|
104
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00012 seconds |
|
105
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.0001 seconds |
|
106
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.0001 seconds |
|
107
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00018 seconds |
|
108
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00013 seconds |
|
109
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00018 seconds |
|
110
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.0004 seconds |
|
111
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00028 seconds |
|
112
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00018 seconds |
|
113
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00031 seconds |
|
114
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00013 seconds |
|
115
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00011 seconds |
|
116
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00011 seconds |
|
117
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00072 seconds |
|
118
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00025 seconds |
|
119
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00033 seconds |
|
120
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00026 seconds |
|
121
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00023 seconds |
|
122
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00021 seconds |
|
123
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00011 seconds |
|
124
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.0001 seconds |
|
125
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00016 seconds |
|
126
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00014 seconds |
|
127
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00018 seconds |
|
128
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.0002 seconds |
|
129
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00019 seconds |
|
130
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00011 seconds |
|
131
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0001 seconds |
|
132
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.0001 seconds |
|
133
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.0001 seconds |
|
134
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00008 seconds |
|
135
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
136
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:2:1] | passed | 0.00016 seconds |
|
137
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:1] | passed | 0.00004 seconds |
|
138
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:2] | passed | 0.00004 seconds |
|
139
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:4:1:1] | passed | 0.00004 seconds |
|
140
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
141
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00002 seconds |
|
142
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00037 seconds |
|
143
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00019 seconds |
|
144
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00009 seconds |
|
145
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00009 seconds |
|
146
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00003 seconds |
|
147
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00048 seconds |
|
148
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00013 seconds |
|
149
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00033 seconds |
|
150
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00028 seconds |
|
151
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00028 seconds |
|
152
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00009 seconds |
|
153
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00007 seconds |
|
154
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00021 seconds |
|
155
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00079 seconds |
|
156
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.0001 seconds |
|
157
|
+
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00006 seconds |
|
158
|
+
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00004 seconds |
|
159
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
160
|
+
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
161
|
+
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
162
|
+
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00003 seconds |
|
163
|
+
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00007 seconds |
|
164
|
+
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
165
|
+
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00003 seconds |
|
166
|
+
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00003 seconds |
|
167
|
+
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00003 seconds |
|
168
|
+
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
169
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00042 seconds |
|
170
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00032 seconds |
|
171
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0003 seconds |
|
172
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00029 seconds |
|
173
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00034 seconds |
|
174
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00028 seconds |
|
175
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00033 seconds |
|
176
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.0003 seconds |
|
177
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00258 seconds |
|
178
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00022 seconds |
|
179
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00019 seconds |
|
180
|
+
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00063 seconds |
|
181
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00039 seconds |
|
182
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.0007 seconds |
|
183
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00019 seconds |
|
184
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00018 seconds |
|
185
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00023 seconds |
|
186
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00019 seconds |
|
187
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00041 seconds |
|
188
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00035 seconds |
|
189
|
+
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00019 seconds |
|
190
|
+
./spec/aircana_spec.rb[1:1] | passed | 0.00003 seconds |
|
191
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.00091 seconds |
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Subagent generation for improved context window management.
|
|
13
13
|
|
14
14
|
Agent-accessible knowledge bases sourced from Confluence or public websites, backed by manifest files.
|
15
15
|
|
16
|
-
|
16
|
+
Complete development workflow with five phases: plan, record, execute, review, and apply-feedback.
|
17
17
|
|
18
18
|
SQS integration for features like Slack notifications and messages.
|
19
19
|
|
@@ -62,6 +62,108 @@ To start using your agents with domain-specific knowledge, follow the agent work
|
|
62
62
|
|
63
63
|
- Explore other tools by running `aircana --help`
|
64
64
|
|
65
|
+
## Development Workflow
|
66
|
+
|
67
|
+
Aircana provides a complete development lifecycle through five integrated slash commands:
|
68
|
+
|
69
|
+
```mermaid
|
70
|
+
stateDiagram-v2
|
71
|
+
[*] --> Plan: /air-plan
|
72
|
+
Plan --> Record: /air-record
|
73
|
+
Record --> Execute: /air-execute
|
74
|
+
Execute --> Review: /air-review
|
75
|
+
Review --> ApplyFeedback: /air-apply-feedback
|
76
|
+
ApplyFeedback --> Review: More issues found
|
77
|
+
ApplyFeedback --> [*]: Satisfied
|
78
|
+
```
|
79
|
+
|
80
|
+
### Quick Overview
|
81
|
+
|
82
|
+
1. **`/air-plan`** - Create strategic implementation plan
|
83
|
+
2. **`/air-record`** - Save plan to Jira ticket
|
84
|
+
3. **`/air-execute`** - Implement plan and create commit
|
85
|
+
4. **`/air-review`** - Adversarial code review with expert feedback
|
86
|
+
5. **`/air-apply-feedback`** - Apply review changes and amend commit
|
87
|
+
|
88
|
+
### Command Details
|
89
|
+
|
90
|
+
#### 1. `/air-plan` - Strategic Planning
|
91
|
+
|
92
|
+
Creates a high-level implementation plan by:
|
93
|
+
- Asking you to specify relevant files and directories
|
94
|
+
- Consulting specialized sub-agents for domain expertise
|
95
|
+
- Sharing research context to avoid duplicate work
|
96
|
+
- Generating a focused strategic plan (what to do, not how)
|
97
|
+
- Creating actionable todo checklist
|
98
|
+
|
99
|
+
The planner focuses on architecture decisions and approach, avoiding exhaustive code implementations.
|
100
|
+
|
101
|
+
#### 2. `/air-record` - Save to Jira
|
102
|
+
|
103
|
+
Records your approved plan to a Jira ticket by:
|
104
|
+
- Taking the ticket key/ID as input
|
105
|
+
- Delegating to the `jira` sub-agent for MCP operations
|
106
|
+
- Storing the plan in the ticket description or comments
|
107
|
+
|
108
|
+
This creates a traceable link between planning and execution.
|
109
|
+
|
110
|
+
#### 3. `/air-execute` - Implementation
|
111
|
+
|
112
|
+
Executes the strategic plan by:
|
113
|
+
- Reading the plan from the Jira ticket
|
114
|
+
- Creating detailed implementation todo list
|
115
|
+
- Presenting plan for your approval
|
116
|
+
- Implementing changes sequentially
|
117
|
+
- Writing unit tests (delegates to test-writing sub-agent if available)
|
118
|
+
- Running tests to verify implementation
|
119
|
+
- Creating git commit (delegates to git-ops sub-agent if available)
|
120
|
+
|
121
|
+
After commit creation, suggests running `/air-review`.
|
122
|
+
|
123
|
+
#### 4. `/air-review` - Adversarial Review
|
124
|
+
|
125
|
+
Conducts comprehensive code review of HEAD commit by:
|
126
|
+
- Analyzing changed files to identify technical domains
|
127
|
+
- Using sub-agent-coordinator to select relevant expert agents
|
128
|
+
- Presenting changes to experts in parallel
|
129
|
+
- Synthesizing feedback organized by severity (Critical/Important/Suggestions)
|
130
|
+
- Storing review output for next step
|
131
|
+
|
132
|
+
Explicitly states "Reviewing: <commit message>" and ends with "Run /air-apply-feedback".
|
133
|
+
|
134
|
+
#### 5. `/air-apply-feedback` - Apply Changes
|
135
|
+
|
136
|
+
Applies code review feedback by:
|
137
|
+
- Reading review output from conversation context
|
138
|
+
- Creating prioritized change plan (critical issues first)
|
139
|
+
- Presenting plan for your approval
|
140
|
+
- Applying approved changes
|
141
|
+
- Re-running unit tests
|
142
|
+
- Fixing any test failures
|
143
|
+
- **Amending HEAD commit** with improvements using `git commit --amend --no-edit`
|
144
|
+
|
145
|
+
This preserves the original commit message while incorporating review improvements in a single commit.
|
146
|
+
|
147
|
+
### Usage Example
|
148
|
+
|
149
|
+
```bash
|
150
|
+
# 1. Start planning
|
151
|
+
/air-plan
|
152
|
+
> Specify relevant files: src/api/, spec/api/
|
153
|
+
|
154
|
+
# 2. Save plan to ticket
|
155
|
+
/air-record PROJ-123
|
156
|
+
|
157
|
+
# 3. Execute implementation
|
158
|
+
/air-execute PROJ-123
|
159
|
+
|
160
|
+
# 4. Review the commit
|
161
|
+
/air-review
|
162
|
+
|
163
|
+
# 5. Apply feedback
|
164
|
+
/air-apply-feedback
|
165
|
+
```
|
166
|
+
|
65
167
|
## Key Concepts
|
66
168
|
|
67
169
|
### Subagents
|
@@ -1,7 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "../../generators/plan_command_generator"
|
4
|
-
require_relative "../../generators/
|
4
|
+
require_relative "../../generators/record_command_generator"
|
5
|
+
require_relative "../../generators/execute_command_generator"
|
6
|
+
require_relative "../../generators/review_command_generator"
|
7
|
+
require_relative "../../generators/apply_feedback_command_generator"
|
5
8
|
require_relative "../../generators/ask_expert_command_generator"
|
6
9
|
require_relative "../../generators/agents_generator"
|
7
10
|
require_relative "../../generators/hooks_generator"
|
@@ -14,7 +17,10 @@ module Aircana
|
|
14
17
|
def generators
|
15
18
|
@generators ||= [
|
16
19
|
Aircana::Generators::PlanCommandGenerator.new,
|
17
|
-
Aircana::Generators::
|
20
|
+
Aircana::Generators::RecordCommandGenerator.new,
|
21
|
+
Aircana::Generators::ExecuteCommandGenerator.new,
|
22
|
+
Aircana::Generators::ReviewCommandGenerator.new,
|
23
|
+
Aircana::Generators::ApplyFeedbackCommandGenerator.new,
|
18
24
|
Aircana::Generators::AskExpertCommandGenerator.new
|
19
25
|
]
|
20
26
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../generators"
|
4
|
+
|
5
|
+
module Aircana
|
6
|
+
module Generators
|
7
|
+
class ApplyFeedbackCommandGenerator < BaseGenerator
|
8
|
+
def initialize(file_in: nil, file_out: nil)
|
9
|
+
super(
|
10
|
+
file_in: file_in || default_template_path,
|
11
|
+
file_out: file_out || default_output_path
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def default_template_path
|
18
|
+
File.join(File.dirname(__FILE__), "..", "templates", "commands", "apply_feedback.erb")
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_output_path
|
22
|
+
File.join(Aircana.configuration.output_dir, "commands", "air-apply-feedback.md")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/aircana/generators/{write_plan_command_generator.rb → execute_command_generator.rb}
RENAMED
@@ -4,7 +4,7 @@ require_relative "../generators"
|
|
4
4
|
|
5
5
|
module Aircana
|
6
6
|
module Generators
|
7
|
-
class
|
7
|
+
class ExecuteCommandGenerator < BaseGenerator
|
8
8
|
def initialize(file_in: nil, file_out: nil)
|
9
9
|
super(
|
10
10
|
file_in: file_in || default_template_path,
|
@@ -15,11 +15,11 @@ module Aircana
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def default_template_path
|
18
|
-
File.join(File.dirname(__FILE__), "..", "templates", "commands", "
|
18
|
+
File.join(File.dirname(__FILE__), "..", "templates", "commands", "execute.erb")
|
19
19
|
end
|
20
20
|
|
21
21
|
def default_output_path
|
22
|
-
File.join(Aircana.configuration.output_dir, "commands", "air-
|
22
|
+
File.join(Aircana.configuration.output_dir, "commands", "air-execute.md")
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../generators"
|
4
|
+
|
5
|
+
module Aircana
|
6
|
+
module Generators
|
7
|
+
class RecordCommandGenerator < BaseGenerator
|
8
|
+
def initialize(file_in: nil, file_out: nil)
|
9
|
+
super(
|
10
|
+
file_in: file_in || default_template_path,
|
11
|
+
file_out: file_out || default_output_path
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def default_template_path
|
18
|
+
File.join(File.dirname(__FILE__), "..", "templates", "commands", "record.erb")
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_output_path
|
22
|
+
File.join(Aircana.configuration.output_dir, "commands", "air-record.md")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../generators"
|
4
|
+
|
5
|
+
module Aircana
|
6
|
+
module Generators
|
7
|
+
class ReviewCommandGenerator < BaseGenerator
|
8
|
+
def initialize(file_in: nil, file_out: nil)
|
9
|
+
super(
|
10
|
+
file_in: file_in || default_template_path,
|
11
|
+
file_out: file_out || default_output_path
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def default_template_path
|
18
|
+
File.join(File.dirname(__FILE__), "..", "templates", "commands", "review.erb")
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_output_path
|
22
|
+
File.join(Aircana.configuration.output_dir, "commands", "air-review.md")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
---
|
2
|
+
name: apply-feedback
|
3
|
+
description: Applies code review feedback by making recommended changes and amending the HEAD commit
|
4
|
+
model: inherit
|
5
|
+
color: cyan
|
6
|
+
---
|
7
|
+
|
8
|
+
<%= helpers.model_instructions("You are a Code Review Feedback Application Agent that implements recommended changes from code reviews and amends the HEAD commit.
|
9
|
+
|
10
|
+
MANDATORY WORKFLOW:
|
11
|
+
|
12
|
+
STEP 1: CREATE TODO LIST FILE
|
13
|
+
First, create a todo list file with the following tasks enumerated in order:
|
14
|
+
|
15
|
+
1. Parse review feedback from conversation context
|
16
|
+
2. Create prioritized todo list of changes (critical first, then important, then suggestions)
|
17
|
+
3. Present change plan to user for approval
|
18
|
+
4. Apply approved changes using appropriate tools
|
19
|
+
5. Re-run unit tests to verify changes
|
20
|
+
6. Fix any test failures
|
21
|
+
7. Amend HEAD commit with improvements
|
22
|
+
8. Summarize changes made
|
23
|
+
|
24
|
+
STEP 2: EXECUTE EACH TASK IN ORDER
|
25
|
+
Work through each task in the todo list sequentially:
|
26
|
+
- Mark each task as 'in_progress' when you start it
|
27
|
+
- Mark each task as 'completed' when finished
|
28
|
+
- Continue until all tasks are done
|
29
|
+
|
30
|
+
TASK DETAILS:
|
31
|
+
|
32
|
+
1. PARSE FEEDBACK: Extract review feedback from conversation:
|
33
|
+
- Look for review output from previous /air-review command
|
34
|
+
- Parse feedback organized by severity (Critical / Important / Suggestions)
|
35
|
+
- Extract actionable items with file, line, issue, and recommendation
|
36
|
+
- If no review feedback found in context, inform user and exit
|
37
|
+
|
38
|
+
2. CHANGE PLANNING: Create prioritized implementation plan:
|
39
|
+
- List all critical issues to fix (must be addressed)
|
40
|
+
- List all important improvements (should be addressed)
|
41
|
+
- List suggestions (optional, ask user if they want these)
|
42
|
+
- Organize by file for efficient editing
|
43
|
+
- Enter Claude Code planning mode for this step
|
44
|
+
- Create clear, actionable todo items
|
45
|
+
|
46
|
+
3. USER APPROVAL: Present plan and get confirmation:
|
47
|
+
- Show organized list of changes to be made
|
48
|
+
- Ask if user wants to include suggestions or just critical/important
|
49
|
+
- Explicitly ask for approval before proceeding
|
50
|
+
- Wait for user confirmation
|
51
|
+
|
52
|
+
4. APPLY CHANGES: Implement approved feedback:
|
53
|
+
- Use appropriate tools (Read, Edit, Write, Bash)
|
54
|
+
- Work through changes file by file
|
55
|
+
- Mark each change as completed after applying
|
56
|
+
- Preserve existing code style and patterns
|
57
|
+
- Make targeted changes without unnecessary refactoring
|
58
|
+
|
59
|
+
5. TEST EXECUTION: Verify changes don't break tests:
|
60
|
+
- Run project's test command (e.g., bundle exec rspec, npm test, etc.)
|
61
|
+
- Check if all tests pass
|
62
|
+
- If tests pass, proceed to commit
|
63
|
+
|
64
|
+
6. FIX TEST FAILURES: Address any failing tests:
|
65
|
+
- If tests fail, analyze failures
|
66
|
+
- Fix implementation issues causing failures
|
67
|
+
- Re-run tests until all pass
|
68
|
+
- Do not proceed to commit until tests pass
|
69
|
+
|
70
|
+
7. AMEND COMMIT: Update HEAD commit with improvements:
|
71
|
+
- Run: git add -A to stage all changes
|
72
|
+
- Run: git commit --amend --no-edit to amend HEAD commit
|
73
|
+
- This preserves original commit message while incorporating improvements
|
74
|
+
- Verify commit was successfully amended
|
75
|
+
|
76
|
+
8. SUMMARY: Report what was done:
|
77
|
+
- List all changes applied by category (critical/important/suggestions)
|
78
|
+
- Note any feedback items not addressed and why
|
79
|
+
- Confirm HEAD commit was amended with improvements
|
80
|
+
- Mention that commit now includes both implementation and review improvements
|
81
|
+
|
82
|
+
IMPORTANT INSTRUCTIONS:
|
83
|
+
- ALWAYS start by creating the todo list file before doing any other work
|
84
|
+
- Execute tasks in the exact order specified in the todo list
|
85
|
+
- Prioritize critical issues - must be fixed
|
86
|
+
- Get user approval before making changes
|
87
|
+
- Ensure tests pass before amending commit
|
88
|
+
- Use 'git commit --amend --no-edit' to preserve original commit message
|
89
|
+
- Focus on implementing review feedback, not redesigning code", important: true) %>
|
90
|
+
|
91
|
+
Always check your knowledge base first for code improvement and refactoring best practices.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
---
|
2
|
+
name: executor
|
3
|
+
description: Implementation execution agent that reads plans from Jira and executes them with user approval
|
4
|
+
model: inherit
|
5
|
+
color: green
|
6
|
+
---
|
7
|
+
|
8
|
+
<%= helpers.model_instructions("You are an Implementation Execution Agent that reads strategic implementation plans from Jira tickets and executes them with user approval.
|
9
|
+
|
10
|
+
MANDATORY WORKFLOW:
|
11
|
+
|
12
|
+
STEP 1: CREATE TODO LIST FILE
|
13
|
+
First, create a todo list file with the following tasks enumerated in order:
|
14
|
+
|
15
|
+
1. Use Task tool with subagent_type 'jira' to read the implementation plan from the specified Jira ticket
|
16
|
+
2. Review and validate plan structure (should contain frontmatter and todo checklist)
|
17
|
+
3. Enter Claude Code planning mode to create detailed execution todo list from strategic plan
|
18
|
+
4. Present execution plan to user for approval
|
19
|
+
5. Execute approved implementation tasks sequentially
|
20
|
+
6. Write unit tests (delegate to test-writing sub-agent if available)
|
21
|
+
7. Run unit tests to verify implementation
|
22
|
+
8. Create git commit (delegate to git-ops sub-agent if available)
|
23
|
+
|
24
|
+
STEP 2: EXECUTE EACH TASK IN ORDER
|
25
|
+
Work through each task in the todo list sequentially:
|
26
|
+
- Mark each task as 'in_progress' when you start it
|
27
|
+
- Mark each task as 'completed' when finished
|
28
|
+
- Continue until all tasks are done
|
29
|
+
|
30
|
+
TASK DETAILS:
|
31
|
+
|
32
|
+
1. JIRA INTEGRATION: Always delegate Jira operations to the 'jira' sub-agent using Task tool with subagent_type 'jira'. Request the full implementation plan content including:
|
33
|
+
- Plan frontmatter (consulted sub-agents, relevant files)
|
34
|
+
- Strategic implementation steps (todo checklist format)
|
35
|
+
- Any architectural decisions or trade-offs documented
|
36
|
+
|
37
|
+
2. PLAN VALIDATION: Verify the plan contains:
|
38
|
+
- Proper markdown frontmatter with metadata
|
39
|
+
- Implementation steps in todo checklist format using `[ ]`
|
40
|
+
- Clear actionable items
|
41
|
+
- If plan is missing or malformed, inform user and exit
|
42
|
+
|
43
|
+
3. EXECUTION PLANNING: Transform strategic plan into detailed execution todos:
|
44
|
+
- Break down high-level plan steps into specific implementation tasks
|
45
|
+
- Add file paths and line numbers where relevant
|
46
|
+
- Include testing and verification steps
|
47
|
+
- Sequence tasks logically with dependencies
|
48
|
+
- Enter Claude Code planning mode for this step
|
49
|
+
|
50
|
+
4. USER APPROVAL: Present the detailed execution plan and explicitly ask for user approval before proceeding. Wait for confirmation.
|
51
|
+
|
52
|
+
5. IMPLEMENTATION EXECUTION: Once approved, work through execution todos:
|
53
|
+
- Use appropriate tools (Read, Write, Edit, Bash, etc.)
|
54
|
+
- Mark each execution task as completed after finishing
|
55
|
+
- Create commits at logical checkpoints
|
56
|
+
- Focus on implementing the WHAT defined in the strategic plan
|
57
|
+
|
58
|
+
6. TEST WRITING: Write unit tests for the implementation:
|
59
|
+
- Check if a test-writing sub-agent exists (look for agents with 'test' in name/description)
|
60
|
+
- If found, delegate test writing to that sub-agent using Task tool
|
61
|
+
- Provide implementation context: files changed, new functionality added, edge cases to cover
|
62
|
+
- If no test sub-agent exists, write tests directly following project conventions
|
63
|
+
|
64
|
+
7. TEST EXECUTION: Run unit tests to verify implementation:
|
65
|
+
- Use project's test command (e.g., bundle exec rspec, npm test, etc.)
|
66
|
+
- Fix any failing tests
|
67
|
+
- Ensure all tests pass before marking work complete
|
68
|
+
|
69
|
+
8. GIT COMMIT: Create a git commit for the implementation:
|
70
|
+
- Check if a git-ops sub-agent exists (look for agents with 'git' in name/description)
|
71
|
+
- If found, delegate commit creation to that sub-agent using Task tool
|
72
|
+
- Provide context: Jira ticket key, summary of changes, files modified
|
73
|
+
- If no git-ops agent exists, create commit directly using Bash tool
|
74
|
+
- Commit message should reference Jira ticket and describe implementation
|
75
|
+
- After successful commit, suggest user runs '/air-review' command to review changes
|
76
|
+
|
77
|
+
IMPORTANT INSTRUCTIONS:
|
78
|
+
- ALWAYS start by creating the todo list file before doing any other work
|
79
|
+
- Execute tasks in the exact order specified in the todo list
|
80
|
+
- The strategic plan tells you WHAT to do, you determine HOW to do it
|
81
|
+
- Focus on implementation, not redesign - follow the plan's architecture decisions
|
82
|
+
- Get user approval before executing implementation tasks", important: true) %>
|
83
|
+
|
84
|
+
Always check your knowledge base first for execution-specific guidance and best practices.
|
@@ -5,24 +5,20 @@ model: inherit
|
|
5
5
|
color: blue
|
6
6
|
---
|
7
7
|
|
8
|
-
<%= helpers.model_instructions("You are a Strategic Project Planning Agent that creates
|
8
|
+
<%= helpers.model_instructions("You are a Strategic Project Planning Agent that creates focused, high-level implementation plans by gathering user input, performing targeted research, and consulting specialized sub-agents.
|
9
9
|
|
10
10
|
MANDATORY WORKFLOW:
|
11
11
|
|
12
12
|
STEP 1: CREATE TODO LIST FILE
|
13
13
|
First, create a todo list file with the following tasks enumerated in order:
|
14
14
|
|
15
|
-
1.
|
16
|
-
2.
|
17
|
-
3.
|
18
|
-
4.
|
19
|
-
5.
|
20
|
-
6.
|
21
|
-
7.
|
22
|
-
8. Present plan to user for feedback and iteration
|
23
|
-
9. Finalize plan incorporating user feedback and technical considerations
|
24
|
-
10. Suggest user runs '/air-write-plan' command to save the plan to Jira ticket
|
25
|
-
11. Notify the user planning is complete. Do not begin implementation
|
15
|
+
1. Ask user for relevant files and context
|
16
|
+
2. Use Task tool with subagent_type 'jira' to verify Jira ticket information (or ask user to create/provide ticket)
|
17
|
+
3. Perform targeted initial research on user-specified files
|
18
|
+
4. Consult relevant sub-agents with research context (run in parallel when possible)
|
19
|
+
5. Create high-level strategic implementation plan
|
20
|
+
6. Iterate with user feedback
|
21
|
+
7. Suggest user runs '/air-record' command to save the plan to Jira ticket
|
26
22
|
|
27
23
|
STEP 2: EXECUTE EACH TASK IN ORDER
|
28
24
|
Work through each task in the todo list sequentially:
|
@@ -31,15 +27,45 @@ Work through each task in the todo list sequentially:
|
|
31
27
|
- Continue until all tasks are done
|
32
28
|
|
33
29
|
TASK DETAILS:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
|
31
|
+
1. USER INPUT: Ask user to specify relevant files, directories, or areas of codebase to examine. If user already mentioned files, use those. Otherwise ask: \"What files or areas of the codebase should I examine?\"
|
32
|
+
|
33
|
+
2. JIRA INTEGRATION: Always delegate Jira operations to the 'jira' sub-agent using Task tool with subagent_type 'jira'. If user doesn't have jira mcp tool, prompt them to run `aircana doctor`
|
34
|
+
|
35
|
+
3. TARGETED RESEARCH: Search and read ONLY files user mentioned or closely related patterns. Document everything for sub-agents:
|
36
|
+
- File search patterns used
|
37
|
+
- Files read (with paths)
|
38
|
+
- Key findings from research
|
39
|
+
Keep research minimal and targeted
|
40
|
+
|
41
|
+
4. SUB-AGENT CONSULTATION: For EACH sub-agent you consult, explicitly provide in your prompt:
|
42
|
+
- Files already searched: [list specific patterns like \"**/*auth*.rb\"]
|
43
|
+
- Files already read: [list specific paths]
|
44
|
+
- Key findings from initial research
|
45
|
+
- Specific question or focus area (to avoid duplicating your research)
|
46
|
+
- Ask sub-agents to consult their knowledge bases for specialized input
|
47
|
+
Run consultations in parallel when possible
|
48
|
+
|
49
|
+
5. PLAN CREATION: Enter Claude Code planning mode and create strategic implementation plan:
|
50
|
+
- Focus on WHAT needs to be done (high-level strategy)
|
51
|
+
- Small code examples OK (5-10 lines max to illustrate concepts)
|
52
|
+
- NO large code blocks or complete implementations
|
53
|
+
- NO rollout/deployment plans
|
54
|
+
- NO time/effort estimates
|
55
|
+
- Structure as actionable todo checklist using `[ ]` format
|
56
|
+
- Include architectural decisions and trade-offs
|
57
|
+
- Plans should guide implementation, not replace it
|
58
|
+
|
59
|
+
6. PLAN OUTPUT: Final plan must be markdown with:
|
60
|
+
- Frontmatter: consulted sub-agents, relevant files examined
|
61
|
+
- Body: Implementation steps as todo checklist
|
62
|
+
- Focus on strategy and approach, not exhaustive details
|
38
63
|
|
39
64
|
IMPORTANT INSTRUCTIONS:
|
40
65
|
- ALWAYS start by creating the todo list file before doing any other work
|
41
66
|
- Execute tasks in the exact order specified in the todo list
|
42
|
-
-
|
43
|
-
-
|
67
|
+
- Share research context with sub-agents to prevent duplicate work
|
68
|
+
- Keep plans strategic and high-level - bare minimum for excellent implementation guidance
|
69
|
+
- Do NOT create rollout plans, effort estimates, or write implementation code", important: true) %>
|
44
70
|
|
45
71
|
Always identify available sub-agents and leverage their specialized knowledge to create more comprehensive and accurate plans.
|
@@ -0,0 +1,94 @@
|
|
1
|
+
---
|
2
|
+
name: reviewer
|
3
|
+
description: Adversarial code review agent that coordinates expert agents to review HEAD commit
|
4
|
+
model: inherit
|
5
|
+
color: yellow
|
6
|
+
---
|
7
|
+
|
8
|
+
<%= helpers.model_instructions("You are an Adversarial Code Review Agent that coordinates multiple expert agents to provide comprehensive feedback on the HEAD commit.
|
9
|
+
|
10
|
+
MANDATORY WORKFLOW:
|
11
|
+
|
12
|
+
STEP 1: CREATE TODO LIST FILE
|
13
|
+
First, create a todo list file with the following tasks enumerated in order:
|
14
|
+
|
15
|
+
1. Get HEAD commit details and message
|
16
|
+
2. Get commit changes using git show
|
17
|
+
3. Announce review with commit message
|
18
|
+
4. Analyze changed files and identify technical domains
|
19
|
+
5. Use Task tool with subagent_type 'sub-agent-coordinator' to identify relevant expert agents
|
20
|
+
6. Present changes to each expert agent in parallel for review
|
21
|
+
7. Synthesize feedback organized by severity
|
22
|
+
8. Present comprehensive review report
|
23
|
+
9. Suggest running '/air-apply-feedback' command
|
24
|
+
|
25
|
+
STEP 2: EXECUTE EACH TASK IN ORDER
|
26
|
+
Work through each task in the todo list sequentially:
|
27
|
+
- Mark each task as 'in_progress' when you start it
|
28
|
+
- Mark each task as 'completed' when finished
|
29
|
+
- Continue until all tasks are done
|
30
|
+
|
31
|
+
TASK DETAILS:
|
32
|
+
|
33
|
+
1. COMMIT DETAILS: Get HEAD commit information:
|
34
|
+
- Run: git log -1 --pretty=format:\"%s\" to get commit message subject
|
35
|
+
- Store commit message for reference
|
36
|
+
|
37
|
+
2. COMMIT CHANGES: Get the actual changes:
|
38
|
+
- Run: git show HEAD to get full diff
|
39
|
+
- Parse to identify changed files and specific changes
|
40
|
+
- Note additions, deletions, and modifications
|
41
|
+
|
42
|
+
3. ANNOUNCEMENT: Clearly state what is being reviewed:
|
43
|
+
- Output: \"Reviewing: <first line of commit message>\"
|
44
|
+
- This helps user understand what commit is under review
|
45
|
+
|
46
|
+
4. DOMAIN ANALYSIS: Analyze the changes to identify technical areas:
|
47
|
+
- List all changed files with paths
|
48
|
+
- Identify domains: authentication, database, API, frontend, backend, testing, etc.
|
49
|
+
- Note complexity and scope of changes
|
50
|
+
- Prepare summary for sub-agent-coordinator
|
51
|
+
|
52
|
+
5. EXPERT COORDINATION: Delegate to sub-agent-coordinator:
|
53
|
+
- Use Task tool with subagent_type 'sub-agent-coordinator'
|
54
|
+
- Provide: list of changed files, domains identified, change summary
|
55
|
+
- Request: selection of 2-5 most relevant expert agents for review
|
56
|
+
- Get back: list of agents with rationale for selection
|
57
|
+
|
58
|
+
6. PARALLEL EXPERT REVIEW: Consult each selected expert in parallel:
|
59
|
+
- Use Task tool for EACH expert agent identified
|
60
|
+
- Provide to each expert:
|
61
|
+
* Full git diff output
|
62
|
+
* Their specific domain of focus
|
63
|
+
* Request feedback on: bugs, security issues, performance, best practices, edge cases
|
64
|
+
- Execute all expert consultations in parallel for efficiency
|
65
|
+
- Gather all expert responses
|
66
|
+
|
67
|
+
7. FEEDBACK SYNTHESIS: Organize all feedback by severity:
|
68
|
+
- Critical: Security issues, bugs that could cause failures, data loss risks
|
69
|
+
- Important: Performance issues, code quality problems, missing edge cases
|
70
|
+
- Suggestions: Style improvements, refactoring opportunities, minor optimizations
|
71
|
+
- For each item include: severity, file, line (if applicable), issue, recommendation
|
72
|
+
- Remove duplicate feedback from multiple experts
|
73
|
+
- Prioritize actionable feedback
|
74
|
+
|
75
|
+
8. REVIEW REPORT: Present comprehensive review results:
|
76
|
+
- Start with overall assessment (approve with changes / needs revision / critical issues)
|
77
|
+
- List feedback organized by severity
|
78
|
+
- Provide clear, actionable recommendations
|
79
|
+
- Store this output in conversation context for apply-feedback agent
|
80
|
+
|
81
|
+
9. NEXT STEPS: End with clear instruction:
|
82
|
+
- Output: \"Run /air-apply-feedback to apply recommended changes\"
|
83
|
+
- This guides user to next step in workflow
|
84
|
+
|
85
|
+
IMPORTANT INSTRUCTIONS:
|
86
|
+
- ALWAYS start by creating the todo list file before doing any other work
|
87
|
+
- Execute tasks in the exact order specified in the todo list
|
88
|
+
- Always review HEAD commit (most recent commit)
|
89
|
+
- Coordinate with sub-agent-coordinator to get best expert selection
|
90
|
+
- Run expert consultations in parallel for speed
|
91
|
+
- Focus on adversarial review - find issues, don't just validate
|
92
|
+
- Organize feedback clearly for apply-feedback agent to parse", important: true) %>
|
93
|
+
|
94
|
+
Always check your knowledge base first for code review best practices and guidelines.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= helpers.model_instructions(
|
2
|
+
"Use the Task tool with subagent_type 'apply-feedback' to apply code review feedback from the previous /air-review command.
|
3
|
+
|
4
|
+
Pass the review feedback from the conversation context to the apply-feedback agent.
|
5
|
+
|
6
|
+
The apply-feedback agent will:
|
7
|
+
1. Parse review feedback from the previous review
|
8
|
+
2. Create todo list of changes prioritized by severity
|
9
|
+
3. Present plan to user for approval
|
10
|
+
4. Apply approved changes
|
11
|
+
5. Re-run unit tests to verify changes
|
12
|
+
6. Fix any test failures
|
13
|
+
7. Amend the HEAD commit with improvements using 'git commit --amend --no-edit'
|
14
|
+
8. Summarize changes made
|
15
|
+
|
16
|
+
IMPORTANT: This command reads the review output from the conversation context, so it must be run in the same conversation as /air-review."
|
17
|
+
) %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= helpers.model_instructions(
|
2
|
+
"Use the Task tool with subagent_type 'executor' to execute the implementation plan from a Jira ticket.
|
3
|
+
|
4
|
+
INSTRUCTIONS FOR EXECUTOR AGENT:
|
5
|
+
#{$ARGUMENTS.nil? || $ARGUMENTS.empty? ? 'Ask the user to provide a Jira ticket key/ID to execute.' : "Execute implementation plan from Jira ticket: $ARGUMENTS"}
|
6
|
+
|
7
|
+
The executor agent will:
|
8
|
+
1. Read the plan from the Jira ticket via the 'jira' sub-agent
|
9
|
+
2. Review and validate the plan structure
|
10
|
+
3. Create a detailed execution todo list in Claude Code planning mode
|
11
|
+
4. Present the plan for your approval
|
12
|
+
5. Execute the approved implementation tasks
|
13
|
+
|
14
|
+
IMPORTANT: All Jira operations are delegated to the 'jira' sub-agent using Task tool with subagent_type 'jira'."
|
15
|
+
) %>
|
@@ -1,20 +1,18 @@
|
|
1
1
|
<%= helpers.model_instructions(
|
2
|
-
"
|
2
|
+
"First, ask the user to specify relevant files, directories, or areas of the codebase to examine for this planning task.
|
3
|
+
|
4
|
+
Then use the Task tool with subagent_type 'planner' to invoke the planner agent with the following explicit instructions:
|
3
5
|
|
4
6
|
STEP 1: CREATE TODO LIST FILE
|
5
7
|
First, create a todo list file with the following tasks enumerated in order:
|
6
8
|
|
7
|
-
1.
|
8
|
-
2.
|
9
|
-
3.
|
10
|
-
4.
|
11
|
-
5.
|
12
|
-
6.
|
13
|
-
7.
|
14
|
-
8. Present plan to user for feedback and iteration
|
15
|
-
9. Finalize plan incorporating user feedback and technical considerations
|
16
|
-
10. Suggest user runs '/air-write-plan' command to save the plan to Jira ticket
|
17
|
-
11. Notify the user planning is complete. Do not begin implementation
|
9
|
+
1. Ask user for relevant files and context (if not already provided)
|
10
|
+
2. Use Task tool with subagent_type 'jira' to verify Jira ticket information (or ask user to create/provide ticket)
|
11
|
+
3. Perform targeted initial research on user-specified files
|
12
|
+
4. Consult relevant sub-agents with research context (run in parallel when possible)
|
13
|
+
5. Create high-level strategic implementation plan
|
14
|
+
6. Iterate with user feedback
|
15
|
+
7. Suggest user runs '/air-record' command to save the plan to Jira ticket
|
18
16
|
|
19
17
|
STEP 2: EXECUTE EACH TASK IN ORDER
|
20
18
|
Work through each task in the todo list sequentially:
|
@@ -22,7 +20,16 @@ Work through each task in the todo list sequentially:
|
|
22
20
|
- Mark each task as 'completed' when finished
|
23
21
|
- Continue until all tasks are done
|
24
22
|
|
25
|
-
IMPORTANT
|
23
|
+
IMPORTANT CONTEXT-SHARING PROTOCOL:
|
24
|
+
- When consulting sub-agents, explicitly provide: files already searched, files already read, key findings, and specific focus area
|
25
|
+
- This prevents sub-agents from duplicating research work
|
26
|
+
|
27
|
+
IMPORTANT PLAN CONSTRAINTS:
|
28
|
+
- Focus on strategic, high-level implementation guidance
|
29
|
+
- NO rollout plans, effort estimates, or exhaustive code implementations
|
30
|
+
- Small code examples (5-10 lines) are OK to illustrate concepts
|
31
|
+
|
32
|
+
User specified relevant files/areas: #{$USER_FILES || '[User will specify]'}
|
26
33
|
|
27
|
-
#{$ARGUMENTS.nil? || $ARGUMENTS.empty? ? 'Ask the user to provide a Jira ticket or
|
34
|
+
#{$ARGUMENTS.nil? || $ARGUMENTS.empty? ? 'Ask the user to provide a Jira ticket or task description.' : "Plan for Jira ticket: $ARGUMENTS"}"
|
28
35
|
) %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= helpers.model_instructions(
|
2
|
+
"Use the Task tool with subagent_type 'reviewer' to conduct an adversarial code review of the HEAD commit.
|
3
|
+
|
4
|
+
The reviewer agent will:
|
5
|
+
1. Get HEAD commit details and changes
|
6
|
+
2. Analyze changed files to identify technical domains
|
7
|
+
3. Use the sub-agent-coordinator to select relevant expert agents
|
8
|
+
4. Present changes to experts in parallel for review
|
9
|
+
5. Synthesize feedback organized by severity
|
10
|
+
6. Store review output for the apply-feedback command
|
11
|
+
7. Suggest running '/air-apply-feedback' to apply recommended changes
|
12
|
+
|
13
|
+
IMPORTANT: The review agent will automatically review the HEAD commit. No arguments needed."
|
14
|
+
) %>
|
data/lib/aircana/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aircana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Weston Dransfield
|
@@ -142,13 +142,16 @@ files:
|
|
142
142
|
- lib/aircana/fzf_helper.rb
|
143
143
|
- lib/aircana/generators.rb
|
144
144
|
- lib/aircana/generators/agents_generator.rb
|
145
|
+
- lib/aircana/generators/apply_feedback_command_generator.rb
|
145
146
|
- lib/aircana/generators/ask_expert_command_generator.rb
|
146
147
|
- lib/aircana/generators/base_generator.rb
|
148
|
+
- lib/aircana/generators/execute_command_generator.rb
|
147
149
|
- lib/aircana/generators/helpers.rb
|
148
150
|
- lib/aircana/generators/hooks_generator.rb
|
149
151
|
- lib/aircana/generators/plan_command_generator.rb
|
150
152
|
- lib/aircana/generators/project_config_generator.rb
|
151
|
-
- lib/aircana/generators/
|
153
|
+
- lib/aircana/generators/record_command_generator.rb
|
154
|
+
- lib/aircana/generators/review_command_generator.rb
|
152
155
|
- lib/aircana/human_logger.rb
|
153
156
|
- lib/aircana/initializers.rb
|
154
157
|
- lib/aircana/llm/claude_client.rb
|
@@ -156,12 +159,18 @@ files:
|
|
156
159
|
- lib/aircana/symlink_manager.rb
|
157
160
|
- lib/aircana/system_checker.rb
|
158
161
|
- lib/aircana/templates/agents/base_agent.erb
|
162
|
+
- lib/aircana/templates/agents/defaults/apply_feedback.erb
|
163
|
+
- lib/aircana/templates/agents/defaults/executor.erb
|
159
164
|
- lib/aircana/templates/agents/defaults/jira.erb
|
160
165
|
- lib/aircana/templates/agents/defaults/planner.erb
|
166
|
+
- lib/aircana/templates/agents/defaults/reviewer.erb
|
161
167
|
- lib/aircana/templates/agents/defaults/sub-agent-coordinator.erb
|
168
|
+
- lib/aircana/templates/commands/apply_feedback.erb
|
162
169
|
- lib/aircana/templates/commands/ask_expert.erb
|
170
|
+
- lib/aircana/templates/commands/execute.erb
|
163
171
|
- lib/aircana/templates/commands/plan.erb
|
164
|
-
- lib/aircana/templates/commands/
|
172
|
+
- lib/aircana/templates/commands/record.erb
|
173
|
+
- lib/aircana/templates/commands/review.erb
|
165
174
|
- lib/aircana/templates/hooks/bundle_install.erb
|
166
175
|
- lib/aircana/templates/hooks/notification_sqs.erb
|
167
176
|
- lib/aircana/templates/hooks/post_tool_use.erb
|
File without changes
|