aircana 4.0.0.rc7 → 4.2.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.
- checksums.yaml +4 -4
- data/.rspec_status +189 -192
- data/CHANGELOG.md +63 -0
- data/CLAUDE.md +1 -1
- data/README.md +32 -92
- data/lib/aircana/cli/commands/doctor_checks.rb +6 -27
- data/lib/aircana/cli/commands/doctor_helpers.rb +0 -4
- data/lib/aircana/cli/commands/generate.rb +6 -19
- data/lib/aircana/templates/commands/ask_expert.erb +21 -29
- data/lib/aircana/templates/commands/plan.erb +57 -34
- data/lib/aircana/version.rb +1 -1
- metadata +2 -10
- data/lib/aircana/generators/apply_feedback_command_generator.rb +0 -26
- data/lib/aircana/generators/execute_command_generator.rb +0 -26
- data/lib/aircana/generators/record_command_generator.rb +0 -26
- data/lib/aircana/generators/review_command_generator.rb +0 -26
- data/lib/aircana/templates/commands/apply_feedback.erb +0 -17
- data/lib/aircana/templates/commands/execute.erb +0 -15
- data/lib/aircana/templates/commands/record.erb +0 -19
- data/lib/aircana/templates/commands/review.erb +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 88a6c73e9f844f63006c9dceb81c13966e44439daebe95d8b80dc43a0ff989fb
|
|
4
|
+
data.tar.gz: 84025bb240a2dd785b0bb656cdf3687f701b08344484a3267570158fc5914e6e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a23dfe484aab695cab0cd7056cad1e50a1726b2e1253aadf86037d3657f26809e747b4787cc8c2c750bcb6073cf594e4c8b76040a02f3264ab20e5c43c1c245b
|
|
7
|
+
data.tar.gz: ff518237a2fcb050342a4e73527f40bf7fc44235789f47155b3fd3b3de7c90deb67bca548dfc70a427c524bf1d2a97fe018cfe66f3c559d75d415eb041e98ddf
|
data/.rspec_status
CHANGED
|
@@ -1,192 +1,189 @@
|
|
|
1
|
-
example_id
|
|
2
|
-
|
|
3
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:1]
|
|
4
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:2]
|
|
5
|
-
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1]
|
|
6
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:1]
|
|
7
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1]
|
|
8
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1]
|
|
9
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1]
|
|
10
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:1]
|
|
11
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:2]
|
|
12
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:3]
|
|
13
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:4]
|
|
14
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:5]
|
|
15
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:1]
|
|
16
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:2]
|
|
17
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:3]
|
|
18
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:4]
|
|
19
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1]
|
|
20
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1]
|
|
21
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:2:1]
|
|
22
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:2:2]
|
|
23
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:1]
|
|
24
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:2]
|
|
25
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1]
|
|
26
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1]
|
|
27
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1]
|
|
28
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2]
|
|
29
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1]
|
|
30
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2]
|
|
31
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3]
|
|
32
|
-
./spec/aircana/configuration_spec.rb[1:1:1]
|
|
33
|
-
./spec/aircana/configuration_spec.rb[1:2:1]
|
|
34
|
-
./spec/aircana/configuration_spec.rb[1:3:1]
|
|
35
|
-
./spec/aircana/configuration_spec.rb[1:4:1]
|
|
36
|
-
./spec/aircana/configuration_spec.rb[1:5:1]
|
|
37
|
-
./spec/aircana/configuration_spec.rb[1:6:1]
|
|
38
|
-
./spec/aircana/configuration_spec.rb[1:6:2]
|
|
39
|
-
./spec/aircana/configuration_spec.rb[1:7:1:1]
|
|
40
|
-
./spec/aircana/configuration_spec.rb[1:7:2:1]
|
|
41
|
-
./spec/aircana/configuration_spec.rb[1:7:3:1]
|
|
42
|
-
./spec/aircana/configuration_spec.rb[1:7:4:1]
|
|
43
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1]
|
|
44
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2]
|
|
45
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3]
|
|
46
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1]
|
|
47
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2]
|
|
48
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3]
|
|
49
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1]
|
|
50
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2]
|
|
51
|
-
./spec/aircana/contexts/local_spec.rb[1:1:1]
|
|
52
|
-
./spec/aircana/contexts/local_spec.rb[1:1:2]
|
|
53
|
-
./spec/aircana/contexts/local_spec.rb[1:1:3]
|
|
54
|
-
./spec/aircana/contexts/local_spec.rb[1:1:4]
|
|
55
|
-
./spec/aircana/contexts/local_spec.rb[1:1:5]
|
|
56
|
-
./spec/aircana/contexts/local_spec.rb[1:1:6]
|
|
57
|
-
./spec/aircana/contexts/local_spec.rb[1:1:7]
|
|
58
|
-
./spec/aircana/contexts/local_spec.rb[1:1:8]
|
|
59
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:1]
|
|
60
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:2]
|
|
61
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:3]
|
|
62
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:1]
|
|
63
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:2]
|
|
64
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:1]
|
|
65
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:2]
|
|
66
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:3]
|
|
67
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:4]
|
|
68
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:1]
|
|
69
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:2]
|
|
70
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:1]
|
|
71
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:2]
|
|
72
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:1]
|
|
73
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:2]
|
|
74
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:3]
|
|
75
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:4]
|
|
76
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:5]
|
|
77
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:6]
|
|
78
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:7]
|
|
79
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:8]
|
|
80
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:9]
|
|
81
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:10]
|
|
82
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:11]
|
|
83
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:12]
|
|
84
|
-
./spec/aircana/contexts/web_spec.rb[1:1:1]
|
|
85
|
-
./spec/aircana/contexts/web_spec.rb[1:2:1]
|
|
86
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:1]
|
|
87
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:2]
|
|
88
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:3]
|
|
89
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:1]
|
|
90
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:2]
|
|
91
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:1]
|
|
92
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:2]
|
|
93
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:3]
|
|
94
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:4]
|
|
95
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:5]
|
|
96
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:1]
|
|
97
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:2]
|
|
98
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:3]
|
|
99
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:1]
|
|
100
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:2]
|
|
101
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:3]
|
|
102
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:1]
|
|
103
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:2]
|
|
104
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:3]
|
|
105
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:1]
|
|
106
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:2]
|
|
107
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:1]
|
|
108
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:2]
|
|
109
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:3]
|
|
110
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:2:1]
|
|
111
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:3:1]
|
|
112
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:1]
|
|
113
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:2]
|
|
114
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:3]
|
|
115
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:1]
|
|
116
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:2]
|
|
117
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1]
|
|
118
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1]
|
|
119
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1]
|
|
120
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2]
|
|
121
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1]
|
|
122
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1]
|
|
123
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1]
|
|
124
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1]
|
|
125
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1]
|
|
126
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1]
|
|
127
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2]
|
|
128
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3]
|
|
129
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1]
|
|
130
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2]
|
|
131
|
-
./spec/aircana/generators/
|
|
132
|
-
./spec/aircana/generators/
|
|
133
|
-
./spec/aircana/generators/
|
|
134
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
135
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
136
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
137
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
138
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
139
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
140
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:
|
|
141
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:
|
|
142
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
143
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
144
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3
|
|
145
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
146
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
147
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
148
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
149
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:
|
|
150
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:
|
|
151
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:
|
|
152
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:
|
|
153
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
154
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:
|
|
155
|
-
./spec/aircana/
|
|
156
|
-
./spec/aircana/
|
|
157
|
-
./spec/aircana/
|
|
158
|
-
./spec/aircana/human_logger_spec.rb[1:
|
|
159
|
-
./spec/aircana/human_logger_spec.rb[1:
|
|
160
|
-
./spec/aircana/human_logger_spec.rb[1:
|
|
161
|
-
./spec/aircana/human_logger_spec.rb[1:
|
|
162
|
-
./spec/aircana/human_logger_spec.rb[1:5:
|
|
163
|
-
./spec/aircana/human_logger_spec.rb[1:5:
|
|
164
|
-
./spec/aircana/human_logger_spec.rb[1:5:
|
|
165
|
-
./spec/aircana/human_logger_spec.rb[1:5:
|
|
166
|
-
./spec/aircana/human_logger_spec.rb[1:
|
|
167
|
-
./spec/aircana/
|
|
168
|
-
./spec/aircana/
|
|
169
|
-
./spec/aircana/
|
|
170
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:
|
|
171
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1
|
|
172
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:
|
|
173
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1
|
|
174
|
-
./spec/aircana/llm/claude_client_spec.rb[1:
|
|
175
|
-
./spec/aircana/llm/claude_client_spec.rb[1:
|
|
176
|
-
./spec/aircana/llm/claude_client_spec.rb[1:
|
|
177
|
-
./spec/aircana/llm/claude_client_spec.rb[1:
|
|
178
|
-
./spec/aircana/
|
|
179
|
-
./spec/aircana/
|
|
180
|
-
./spec/aircana/
|
|
181
|
-
./spec/aircana/system_checker_spec.rb[1:
|
|
182
|
-
./spec/aircana/system_checker_spec.rb[1:
|
|
183
|
-
./spec/aircana/system_checker_spec.rb[1:
|
|
184
|
-
./spec/aircana/system_checker_spec.rb[1:2
|
|
185
|
-
./spec/aircana/system_checker_spec.rb[1:
|
|
186
|
-
./spec/aircana/system_checker_spec.rb[1:3:
|
|
187
|
-
./spec/aircana/system_checker_spec.rb[1:3:
|
|
188
|
-
./spec/
|
|
189
|
-
./spec/
|
|
190
|
-
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00021 seconds |
|
|
191
|
-
./spec/aircana_spec.rb[1:1] | passed | 0.00003 seconds |
|
|
192
|
-
./spec/aircana_spec.rb[1:2] | passed | 0.00088 seconds |
|
|
1
|
+
example_id | status | run_time |
|
|
2
|
+
--------------------------------------------------------------- | ------ | --------------- |
|
|
3
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.00981 seconds |
|
|
4
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00396 seconds |
|
|
5
|
+
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.01071 seconds |
|
|
6
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00333 seconds |
|
|
7
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00279 seconds |
|
|
8
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00298 seconds |
|
|
9
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00325 seconds |
|
|
10
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00152 seconds |
|
|
11
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.0014 seconds |
|
|
12
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00141 seconds |
|
|
13
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00139 seconds |
|
|
14
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00138 seconds |
|
|
15
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.0028 seconds |
|
|
16
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00405 seconds |
|
|
17
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00467 seconds |
|
|
18
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00396 seconds |
|
|
19
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00039 seconds |
|
|
20
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00152 seconds |
|
|
21
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.0011 seconds |
|
|
22
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00176 seconds |
|
|
23
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.0018 seconds |
|
|
24
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00174 seconds |
|
|
25
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00028 seconds |
|
|
26
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00167 seconds |
|
|
27
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00071 seconds |
|
|
28
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.0002 seconds |
|
|
29
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00023 seconds |
|
|
30
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00198 seconds |
|
|
31
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00114 seconds |
|
|
32
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00016 seconds |
|
|
33
|
+
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00015 seconds |
|
|
34
|
+
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00011 seconds |
|
|
35
|
+
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00008 seconds |
|
|
36
|
+
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00009 seconds |
|
|
37
|
+
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00008 seconds |
|
|
38
|
+
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00008 seconds |
|
|
39
|
+
./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.00023 seconds |
|
|
40
|
+
./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.0024 seconds |
|
|
41
|
+
./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.00021 seconds |
|
|
42
|
+
./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.0001 seconds |
|
|
43
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00309 seconds |
|
|
44
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00084 seconds |
|
|
45
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00145 seconds |
|
|
46
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00026 seconds |
|
|
47
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00019 seconds |
|
|
48
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00018 seconds |
|
|
49
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00056 seconds |
|
|
50
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00051 seconds |
|
|
51
|
+
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00054 seconds |
|
|
52
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00051 seconds |
|
|
53
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00041 seconds |
|
|
54
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00033 seconds |
|
|
55
|
+
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00038 seconds |
|
|
56
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00039 seconds |
|
|
57
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00063 seconds |
|
|
58
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00041 seconds |
|
|
59
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00109 seconds |
|
|
60
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00089 seconds |
|
|
61
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.00103 seconds |
|
|
62
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00118 seconds |
|
|
63
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00106 seconds |
|
|
64
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00135 seconds |
|
|
65
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.0003 seconds |
|
|
66
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.0011 seconds |
|
|
67
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00101 seconds |
|
|
68
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00102 seconds |
|
|
69
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.0004 seconds |
|
|
70
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00098 seconds |
|
|
71
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00023 seconds |
|
|
72
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00024 seconds |
|
|
73
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00036 seconds |
|
|
74
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00021 seconds |
|
|
75
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00024 seconds |
|
|
76
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00024 seconds |
|
|
77
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.0002 seconds |
|
|
78
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00139 seconds |
|
|
79
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00032 seconds |
|
|
80
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00035 seconds |
|
|
81
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00572 seconds |
|
|
82
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00113 seconds |
|
|
83
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.0009 seconds |
|
|
84
|
+
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00023 seconds |
|
|
85
|
+
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00021 seconds |
|
|
86
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00015 seconds |
|
|
87
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00012 seconds |
|
|
88
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00011 seconds |
|
|
89
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00028 seconds |
|
|
90
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.0002 seconds |
|
|
91
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00025 seconds |
|
|
92
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00028 seconds |
|
|
93
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00025 seconds |
|
|
94
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00016 seconds |
|
|
95
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.0002 seconds |
|
|
96
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00012 seconds |
|
|
97
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.0002 seconds |
|
|
98
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00012 seconds |
|
|
99
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00037 seconds |
|
|
100
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.0001 seconds |
|
|
101
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00028 seconds |
|
|
102
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00023 seconds |
|
|
103
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00026 seconds |
|
|
104
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00021 seconds |
|
|
105
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.0001 seconds |
|
|
106
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.0001 seconds |
|
|
107
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00015 seconds |
|
|
108
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00014 seconds |
|
|
109
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00017 seconds |
|
|
110
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00018 seconds |
|
|
111
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00019 seconds |
|
|
112
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
|
|
113
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0001 seconds |
|
|
114
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.0001 seconds |
|
|
115
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00009 seconds |
|
|
116
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00007 seconds |
|
|
117
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
118
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
119
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00033 seconds |
|
|
120
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00018 seconds |
|
|
121
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00008 seconds |
|
|
122
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00009 seconds |
|
|
123
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00003 seconds |
|
|
124
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00047 seconds |
|
|
125
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00012 seconds |
|
|
126
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00034 seconds |
|
|
127
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00028 seconds |
|
|
128
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00027 seconds |
|
|
129
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00008 seconds |
|
|
130
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00006 seconds |
|
|
131
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00032 seconds |
|
|
132
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00021 seconds |
|
|
133
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.00032 seconds |
|
|
134
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00046 seconds |
|
|
135
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00033 seconds |
|
|
136
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00029 seconds |
|
|
137
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.0002 seconds |
|
|
138
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.00022 seconds |
|
|
139
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00019 seconds |
|
|
140
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00017 seconds |
|
|
141
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00019 seconds |
|
|
142
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00018 seconds |
|
|
143
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00017 seconds |
|
|
144
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00022 seconds |
|
|
145
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.0002 seconds |
|
|
146
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.0002 seconds |
|
|
147
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00018 seconds |
|
|
148
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00018 seconds |
|
|
149
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.0002 seconds |
|
|
150
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.0002 seconds |
|
|
151
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00019 seconds |
|
|
152
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00018 seconds |
|
|
153
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00113 seconds |
|
|
154
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00095 seconds |
|
|
155
|
+
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00007 seconds |
|
|
156
|
+
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00004 seconds |
|
|
157
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00007 seconds |
|
|
158
|
+
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
159
|
+
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
160
|
+
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00003 seconds |
|
|
161
|
+
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00003 seconds |
|
|
162
|
+
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
|
163
|
+
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00003 seconds |
|
|
164
|
+
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00003 seconds |
|
|
165
|
+
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00003 seconds |
|
|
166
|
+
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
167
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00046 seconds |
|
|
168
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00033 seconds |
|
|
169
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0003 seconds |
|
|
170
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00268 seconds |
|
|
171
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.0004 seconds |
|
|
172
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00029 seconds |
|
|
173
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00071 seconds |
|
|
174
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.0003 seconds |
|
|
175
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00029 seconds |
|
|
176
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.0002 seconds |
|
|
177
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00041 seconds |
|
|
178
|
+
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.0003 seconds |
|
|
179
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.0004 seconds |
|
|
180
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.0007 seconds |
|
|
181
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.0002 seconds |
|
|
182
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.0002 seconds |
|
|
183
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00027 seconds |
|
|
184
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00019 seconds |
|
|
185
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.0002 seconds |
|
|
186
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00025 seconds |
|
|
187
|
+
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00016 seconds |
|
|
188
|
+
./spec/aircana_spec.rb[1:1] | passed | 0.00003 seconds |
|
|
189
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.00087 seconds |
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [4.2.0] - 2025-10-31
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **BREAKING**: `/ask-expert` command now uses Skills instead of agents
|
|
14
|
+
- Uses Skill tool for faster knowledge access with shared context
|
|
15
|
+
- Skills are named like "Learn Backend API", "Learn Database Design"
|
|
16
|
+
- Better for quick Q&A scenarios
|
|
17
|
+
- `/plan` command continues using agents with Task tool
|
|
18
|
+
- Maintains separate contexts per agent for better planning isolation
|
|
19
|
+
- Uses Task tool with subagent_type parameter
|
|
20
|
+
|
|
21
|
+
## [4.1.0] - 2025-10-31
|
|
22
|
+
|
|
23
|
+
### Removed
|
|
24
|
+
- **BREAKING**: Removed obsolete slash commands: `/execute`, `/record`, `/review`, `/apply-feedback`
|
|
25
|
+
- Only `/plan` and `/ask-expert` commands remain
|
|
26
|
+
- `/plan` command simplified to focus on strategic planning with expert consultation
|
|
27
|
+
- Workflow commands removed as they were incompatible with new subagent → skill architecture
|
|
28
|
+
- Removed Jira MCP tool integration from `doctor` command
|
|
29
|
+
- Jira integration only used by removed workflow commands
|
|
30
|
+
- Simplified doctor health checks
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Updated `doctor` command terminology from "agents" to "knowledge bases" (KBs)
|
|
34
|
+
- Updated command generators to only include `plan` and `ask-expert`
|
|
35
|
+
- `/plan` command now requires user to be in Claude Code planning mode
|
|
36
|
+
- `/plan` command uses coordinator pattern to identify and consult relevant expert agents
|
|
37
|
+
|
|
38
|
+
### Documentation
|
|
39
|
+
- Updated README.md to remove obsolete workflow documentation
|
|
40
|
+
- Updated CLAUDE.md with current command generator list
|
|
41
|
+
- Added new "Slash Commands" section documenting `/ask-expert` and `/plan`
|
|
42
|
+
|
|
43
|
+
## [4.0.0] - 2025-10-31
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- **BREAKING**: Renamed "agents" to "knowledge bases" (KBs) throughout the system
|
|
47
|
+
- Command renamed: `aircana agents` → `aircana kb`
|
|
48
|
+
- Terminology updated to reflect purpose: curated domain knowledge for Claude Code
|
|
49
|
+
- All commands now use KB terminology: `create`, `refresh`, `list`, `add-url`, `refresh-all`
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- Comprehensive Confluence macro preprocessing for better content extraction
|
|
53
|
+
- Converts panel macros to blockquotes
|
|
54
|
+
- Converts info/note/warning macros to formatted blockquotes with emoji indicators
|
|
55
|
+
- Strips Confluence-specific XML tags while preserving content
|
|
56
|
+
- Fixes missing code examples from knowledge bases
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
- Knowledge base creation UX improvements
|
|
60
|
+
- Better prompts that guide users naturally toward topic naming
|
|
61
|
+
- Prevents duplicate "Learn" prefix in generated skill names
|
|
62
|
+
- SKILL.md generation now happens after content is fetched
|
|
63
|
+
- Empty knowledge base warnings added
|
|
64
|
+
- Proper file references in SKILL.md
|
|
65
|
+
- Filename strategy improvements
|
|
66
|
+
- Matches disk files to manifest summaries
|
|
67
|
+
- Correct file references in generated skills
|
|
68
|
+
|
|
69
|
+
### Removed
|
|
70
|
+
- Agent-specific terminology and templates
|
|
71
|
+
- Unused agent management commands and hooks
|
|
72
|
+
|
|
10
73
|
## [4.0.0.rc2] - 2025-10-17
|
|
11
74
|
|
|
12
75
|
### Fixed
|
data/CLAUDE.md
CHANGED
|
@@ -97,7 +97,7 @@ Aircana is a Ruby gem that creates and manages Claude Code plugins with knowledg
|
|
|
97
97
|
- **Generators** (`lib/aircana/generators/`): ERB-based template generation
|
|
98
98
|
- `base_generator.rb`: Base class with ERB rendering and file writing
|
|
99
99
|
- `skills_generator.rb`: Knowledge base file generation (Markdown format)
|
|
100
|
-
- Command generators: plan,
|
|
100
|
+
- Command generators: plan, ask_expert
|
|
101
101
|
- `hooks_generator.rb`: Hook script generation
|
|
102
102
|
- Templates location: `lib/aircana/templates/`
|
|
103
103
|
|
data/README.md
CHANGED
|
@@ -91,7 +91,7 @@ aircana plugin validate
|
|
|
91
91
|
|
|
92
92
|
- Use the `/ask-expert` command to consult multiple specialized experts
|
|
93
93
|
|
|
94
|
-
-
|
|
94
|
+
- Use the `/plan` command to create strategic implementation plans with expert consultation
|
|
95
95
|
|
|
96
96
|
- Explore other tools by running `aircana --help`
|
|
97
97
|
|
|
@@ -391,108 +391,48 @@ At Instructure this means you can easily configure Claude Code to send you slack
|
|
|
391
391
|
- Knowledge bases should contain 5-20 highly relevant documents, not 100+ loosely related ones
|
|
392
392
|
- Use descriptions to clearly define boundaries and expertise areas
|
|
393
393
|
|
|
394
|
-
##
|
|
394
|
+
## Slash Commands
|
|
395
395
|
|
|
396
|
-
Aircana provides
|
|
396
|
+
Aircana provides two powerful slash commands that leverage your expert knowledge bases:
|
|
397
397
|
|
|
398
|
-
|
|
399
|
-
stateDiagram-v2
|
|
400
|
-
[*] --> Plan: /plan
|
|
401
|
-
Plan --> Record: /record
|
|
402
|
-
Record --> Execute: /execute
|
|
403
|
-
Execute --> Review: /review
|
|
404
|
-
Review --> ApplyFeedback: /apply-feedback
|
|
405
|
-
ApplyFeedback --> Review: More issues found
|
|
406
|
-
ApplyFeedback --> [*]: Satisfied
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
### Quick Overview
|
|
410
|
-
|
|
411
|
-
1. **`/plan`** - Create strategic implementation plan
|
|
412
|
-
2. **`/record`** - Save plan to Jira ticket
|
|
413
|
-
3. **`/execute`** - Implement plan and create commit
|
|
414
|
-
4. **`/review`** - Adversarial code review with expert feedback
|
|
415
|
-
5. **`/apply-feedback`** - Apply review changes and amend commit
|
|
416
|
-
|
|
417
|
-
### Command Details
|
|
418
|
-
|
|
419
|
-
#### 1. `/plan` - Strategic Planning
|
|
420
|
-
|
|
421
|
-
Creates a high-level implementation plan by:
|
|
422
|
-
- Asking you to specify relevant files and directories
|
|
423
|
-
- Consulting specialized sub-agents for domain expertise
|
|
424
|
-
- Sharing research context to avoid duplicate work
|
|
425
|
-
- Generating a focused strategic plan (what to do, not how)
|
|
426
|
-
- Creating actionable todo checklist
|
|
427
|
-
|
|
428
|
-
The planner focuses on architecture decisions and approach, avoiding exhaustive code implementations.
|
|
429
|
-
|
|
430
|
-
#### 2. `/record` - Save to Jira
|
|
431
|
-
|
|
432
|
-
Records your approved plan to a Jira ticket by:
|
|
433
|
-
- Taking the ticket key/ID as input
|
|
434
|
-
- Delegating to the `jira` sub-agent for MCP operations
|
|
435
|
-
- Storing the plan in the ticket description or comments
|
|
436
|
-
|
|
437
|
-
This creates a traceable link between planning and execution.
|
|
438
|
-
|
|
439
|
-
#### 3. `/execute` - Implementation
|
|
440
|
-
|
|
441
|
-
Executes the strategic plan by:
|
|
442
|
-
- Reading the plan from the Jira ticket
|
|
443
|
-
- Creating detailed implementation todo list
|
|
444
|
-
- Presenting plan for your approval
|
|
445
|
-
- Implementing changes sequentially
|
|
446
|
-
- Writing unit tests (delegates to test-writing sub-agent if available)
|
|
447
|
-
- Running tests to verify implementation
|
|
448
|
-
- Creating git commit (delegates to git-ops sub-agent if available)
|
|
398
|
+
### `/ask-expert` - Expert Consultation
|
|
449
399
|
|
|
450
|
-
|
|
400
|
+
Consults multiple specialized knowledge bases to answer questions by:
|
|
401
|
+
- Using a coordinator to identify relevant expert agents
|
|
402
|
+
- Running expert consultations in parallel for efficiency
|
|
403
|
+
- Synthesizing responses into a comprehensive answer
|
|
404
|
+
- Citing which experts contributed specific insights
|
|
405
|
+
- Providing follow-up guidance when needed
|
|
451
406
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
-
|
|
456
|
-
|
|
457
|
-
- Presenting changes to experts in parallel
|
|
458
|
-
- Synthesizing feedback organized by severity (Critical/Important/Suggestions)
|
|
459
|
-
- Storing review output for next step
|
|
460
|
-
|
|
461
|
-
Explicitly states "Reviewing: <commit message>" and ends with "Run /apply-feedback".
|
|
462
|
-
|
|
463
|
-
#### 5. `/apply-feedback` - Apply Changes
|
|
464
|
-
|
|
465
|
-
Applies code review feedback by:
|
|
466
|
-
- Reading review output from conversation context
|
|
467
|
-
- Creating prioritized change plan (critical issues first)
|
|
468
|
-
- Presenting plan for your approval
|
|
469
|
-
- Applying approved changes
|
|
470
|
-
- Re-running unit tests
|
|
471
|
-
- Fixing any test failures
|
|
472
|
-
- **Amending HEAD commit** with improvements using `git commit --amend --no-edit`
|
|
473
|
-
|
|
474
|
-
This preserves the original commit message while incorporating review improvements in a single commit.
|
|
475
|
-
|
|
476
|
-
### Usage Example
|
|
407
|
+
**Example usage:**
|
|
408
|
+
```
|
|
409
|
+
/ask-expert How should I implement caching for our API?
|
|
410
|
+
/ask-expert What are the best practices for database migrations?
|
|
411
|
+
```
|
|
477
412
|
|
|
478
|
-
|
|
479
|
-
# 1. Start planning
|
|
480
|
-
/plan
|
|
481
|
-
> Specify relevant files: src/api/, spec/api/
|
|
413
|
+
The command automatically selects the most relevant experts based on your question and the knowledge bases available in your plugin.
|
|
482
414
|
|
|
483
|
-
|
|
484
|
-
/record PROJ-123
|
|
415
|
+
### `/plan` - Strategic Planning
|
|
485
416
|
|
|
486
|
-
|
|
487
|
-
|
|
417
|
+
Creates strategic implementation plans by consulting domain experts. This command:
|
|
418
|
+
- Verifies you're in Claude Code planning mode
|
|
419
|
+
- Uses a coordinator to identify relevant expert agents
|
|
420
|
+
- Consults experts in parallel for their domain-specific insights
|
|
421
|
+
- Synthesizes expert input into a unified strategic plan
|
|
422
|
+
- Presents the plan as numbered implementation steps
|
|
423
|
+
- Focuses on high-level guidance (not exhaustive code implementations)
|
|
488
424
|
|
|
489
|
-
|
|
490
|
-
|
|
425
|
+
**Example usage:**
|
|
426
|
+
```
|
|
427
|
+
# First, put Claude Code into planning mode, then:
|
|
428
|
+
/plan Add authentication to the user API
|
|
491
429
|
|
|
492
|
-
#
|
|
493
|
-
/
|
|
430
|
+
# Or provide task as argument:
|
|
431
|
+
/plan "Refactor the database layer for better performance"
|
|
494
432
|
```
|
|
495
433
|
|
|
434
|
+
The plan focuses on strategic decisions, architecture considerations, and approach—leveraging the collective expertise of your knowledge bases to create well-informed implementation guidance.
|
|
435
|
+
|
|
496
436
|
## Configuration (Optional)
|
|
497
437
|
|
|
498
438
|
### Confluence Setup (Optional)
|
|
@@ -11,7 +11,6 @@ module Aircana
|
|
|
11
11
|
|
|
12
12
|
if claude_available?
|
|
13
13
|
log_success("claude", "Claude Code installed")
|
|
14
|
-
check_mcp_tools
|
|
15
14
|
else
|
|
16
15
|
log_failure("claude", "Claude Code not installed")
|
|
17
16
|
log_remedy("Install Claude Code from: https://claude.ai/download")
|
|
@@ -21,26 +20,6 @@ module Aircana
|
|
|
21
20
|
check_claude_directories
|
|
22
21
|
end
|
|
23
22
|
|
|
24
|
-
def check_mcp_tools
|
|
25
|
-
claude_path = find_claude_path
|
|
26
|
-
return unless claude_path
|
|
27
|
-
|
|
28
|
-
check_jira_mcp_tool(claude_path)
|
|
29
|
-
rescue StandardError => e
|
|
30
|
-
log_warning("MCP Jira", "Could not check MCP tool: #{e.message}")
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def check_jira_mcp_tool(claude_path)
|
|
34
|
-
result = `#{claude_path} mcp get jira 2>&1`
|
|
35
|
-
if mcp_tool_installed?(result)
|
|
36
|
-
log_success("MCP Jira", "Atlassian/Jira MCP tool installed")
|
|
37
|
-
else
|
|
38
|
-
log_failure("MCP Jira", "Atlassian/Jira MCP tool not found")
|
|
39
|
-
log_remedy("Install with: claude mcp add --transport sse atlassian https://mcp.atlassian.com/v1/sse")
|
|
40
|
-
@issues_found = true
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
23
|
def check_claude_directories
|
|
45
24
|
project_claude = File.join(Dir.pwd, ".claude")
|
|
46
25
|
if Dir.exist?(project_claude)
|
|
@@ -63,13 +42,13 @@ module Aircana
|
|
|
63
42
|
def check_agents_status
|
|
64
43
|
agents_dir = File.join(Dir.pwd, ".claude", "agents")
|
|
65
44
|
if Dir.exist?(agents_dir) && !Dir.empty?(agents_dir)
|
|
66
|
-
|
|
67
|
-
log_success("
|
|
45
|
+
kb_count = Dir.glob(File.join(agents_dir, "*.md")).size
|
|
46
|
+
log_success("KBs", "#{kb_count} knowledge base(s) configured")
|
|
68
47
|
elsif Dir.exist?(agents_dir)
|
|
69
|
-
log_info("
|
|
48
|
+
log_info("KBs", "Knowledge bases directory exists but is empty")
|
|
70
49
|
else
|
|
71
|
-
log_info("
|
|
72
|
-
log_remedy("Create
|
|
50
|
+
log_info("KBs", "No knowledge bases configured yet")
|
|
51
|
+
log_remedy("Create knowledge bases with: aircana kb create")
|
|
73
52
|
end
|
|
74
53
|
end
|
|
75
54
|
end
|
|
@@ -90,7 +69,7 @@ module Aircana
|
|
|
90
69
|
else
|
|
91
70
|
log_info("Confluence", "Not configured")
|
|
92
71
|
log_remedy("Set CONFLUENCE_BASE_URL, CONFLUENCE_USERNAME, " \
|
|
93
|
-
"and CONFLUENCE_API_TOKEN for
|
|
72
|
+
"and CONFLUENCE_API_TOKEN for knowledge base refresh")
|
|
94
73
|
end
|
|
95
74
|
end
|
|
96
75
|
|
|
@@ -51,10 +51,6 @@ module Aircana
|
|
|
51
51
|
nil
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
def mcp_tool_installed?(result)
|
|
55
|
-
$CHILD_STATUS.success? && !result.include?("not found") && !result.include?("error")
|
|
56
|
-
end
|
|
57
|
-
|
|
58
54
|
def detect_os
|
|
59
55
|
return "macOS" if RUBY_PLATFORM.match?(/darwin/)
|
|
60
56
|
return "Ubuntu/Debian" if File.exist?("/etc/debian_version")
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# require_relative "../../generators/record_command_generator"
|
|
6
|
-
# require_relative "../../generators/execute_command_generator"
|
|
7
|
-
# require_relative "../../generators/review_command_generator"
|
|
8
|
-
# require_relative "../../generators/apply_feedback_command_generator"
|
|
9
|
-
# require_relative "../../generators/ask_expert_command_generator"
|
|
3
|
+
require_relative "../../generators/plan_command_generator"
|
|
4
|
+
require_relative "../../generators/ask_expert_command_generator"
|
|
10
5
|
require_relative "../../generators/hooks_generator"
|
|
11
6
|
|
|
12
7
|
module Aircana
|
|
@@ -14,18 +9,10 @@ module Aircana
|
|
|
14
9
|
module Generate
|
|
15
10
|
class << self
|
|
16
11
|
def generators
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# @generators ||= [
|
|
22
|
-
# Aircana::Generators::PlanCommandGenerator.new,
|
|
23
|
-
# Aircana::Generators::RecordCommandGenerator.new,
|
|
24
|
-
# Aircana::Generators::ExecuteCommandGenerator.new,
|
|
25
|
-
# Aircana::Generators::ReviewCommandGenerator.new,
|
|
26
|
-
# Aircana::Generators::ApplyFeedbackCommandGenerator.new,
|
|
27
|
-
# Aircana::Generators::AskExpertCommandGenerator.new
|
|
28
|
-
# ]
|
|
12
|
+
@generators ||= [
|
|
13
|
+
Aircana::Generators::PlanCommandGenerator.new,
|
|
14
|
+
Aircana::Generators::AskExpertCommandGenerator.new
|
|
15
|
+
]
|
|
29
16
|
end
|
|
30
17
|
|
|
31
18
|
def run
|
|
@@ -1,44 +1,36 @@
|
|
|
1
1
|
<%= helpers.model_instructions(
|
|
2
|
-
"You are coordinating expert consultation to answer a question by leveraging
|
|
2
|
+
"You are coordinating expert consultation to answer a question by leveraging specialized knowledge bases through Skills. Follow this precise workflow:
|
|
3
3
|
|
|
4
4
|
STEP 1: QUESTION VALIDATION
|
|
5
5
|
#{$ARGUMENTS.nil? || $ARGUMENTS.empty? ? 'Ask the user: \"What is your question?\" and wait for their response before proceeding.' : "Question to analyze: \"#{$ARGUMENTS}\""}
|
|
6
6
|
|
|
7
|
-
STEP 2:
|
|
8
|
-
|
|
7
|
+
STEP 2: IDENTIFY RELEVANT SkillS
|
|
8
|
+
Analyze the question and identify which available Skills are most relevant:
|
|
9
|
+
- Select 1-3 Skills whose expertise best matches the question
|
|
10
|
+
- Consider Skills whose knowledge domains complement each other
|
|
11
|
+
- If no Skills are clearly relevant, explain this to the user
|
|
9
12
|
|
|
10
|
-
STEP 3: PARALLEL
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
- Provide the original question plus any agent-specific context the coordinator suggested
|
|
14
|
-
- Execute multiple Task tool calls in a single message for parallel processing
|
|
13
|
+
STEP 3: PARALLEL Skill CONSULTATION
|
|
14
|
+
For each Skill in parallel:
|
|
15
|
+
- Ask the skill to answer their question using their specialized knowledge
|
|
15
16
|
|
|
16
17
|
STEP 4: SYNTHESIS AND RESPONSE
|
|
17
|
-
After receiving responses from all consulted
|
|
18
|
-
- Analyze and synthesize the
|
|
18
|
+
After receiving responses from all consulted Skills:
|
|
19
|
+
- Analyze and synthesize the knowledge retrieved
|
|
19
20
|
- Identify common themes, conflicting viewpoints, and complementary insights
|
|
20
|
-
- Provide a comprehensive answer that leverages the collective
|
|
21
|
-
- Cite which
|
|
22
|
-
- Note any areas where
|
|
21
|
+
- Provide a comprehensive answer that leverages the collective knowledge
|
|
22
|
+
- Cite which Skills contributed specific insights where relevant
|
|
23
|
+
- Note any areas where information conflicted and provide your assessment
|
|
23
24
|
|
|
24
25
|
STEP 5: FOLLOW-UP GUIDANCE
|
|
25
|
-
If the question requires further clarification or the
|
|
26
|
+
If the question requires further clarification or the knowledge suggests additional considerations:
|
|
26
27
|
- Suggest specific follow-up questions
|
|
27
|
-
- Recommend additional
|
|
28
|
-
- Provide guidance on next steps based on the
|
|
28
|
+
- Recommend additional Skills to consult if needed
|
|
29
|
+
- Provide guidance on next steps based on the knowledge retrieved
|
|
29
30
|
|
|
30
31
|
IMPORTANT EXECUTION NOTES:
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
- Ensure each agent receives context appropriate to their expertise domain
|
|
34
|
-
- Synthesize responses rather than simply concatenating them
|
|
32
|
+
- Use parallel Skill tool execution when consulting multiple Skills (single message with multiple tool calls)
|
|
33
|
+
- Synthesize knowledge rather than simply concatenating responses
|
|
35
34
|
- Maintain focus on providing actionable, comprehensive answers
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
If coordinator recommends agents A, B, and C, send one message with three Task tool calls:
|
|
39
|
-
1. Task(subagent_type='agent-A', prompt='[question + A-specific context]')
|
|
40
|
-
2. Task(subagent_type='agent-B', prompt='[question + B-specific context]')
|
|
41
|
-
3. Task(subagent_type='agent-C', prompt='[question + C-specific context]')
|
|
42
|
-
|
|
43
|
-
This approach ensures you leverage the full expertise available while maintaining efficient coordination."
|
|
44
|
-
) %>
|
|
35
|
+
- If no relevant Skills exist, provide a direct answer based on your general knowledge
|
|
36
|
+
) %>
|
|
@@ -1,35 +1,58 @@
|
|
|
1
1
|
<%= helpers.model_instructions(
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
3
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
2
|
+
"You are helping the user create a strategic implementation plan by consulting domain experts. Follow this workflow:
|
|
3
|
+
|
|
4
|
+
STEP 1: PLANNING MODE CHECK
|
|
5
|
+
Verify the user is in Claude Code planning mode. If not, tell them:
|
|
6
|
+
\"Please put Claude Code into planning mode first, then describe what you want to plan.\"
|
|
7
|
+
|
|
8
|
+
STEP 2: TASK VALIDATION
|
|
9
|
+
#{$ARGUMENTS.nil? || $ARGUMENTS.empty? ? 'Ask the user: \"What would you like to plan?\" and wait for their response before proceeding.' : "Task to plan: \"#{$ARGUMENTS}\""}
|
|
10
|
+
|
|
11
|
+
STEP 3: IDENTIFY RELEVANT EXPERT AGENTS
|
|
12
|
+
Analyze the task and identify which expert agents from the agents/ directory should contribute to this plan:
|
|
13
|
+
- Review available agent descriptions to understand each agent's domain expertise
|
|
14
|
+
- Select 1-3 agents whose expertise is most relevant to the planning task
|
|
15
|
+
- Consider agents whose knowledge domains complement each other for comprehensive planning
|
|
16
|
+
- If no agents are clearly relevant, create the plan using your general knowledge
|
|
17
|
+
|
|
18
|
+
STEP 4: PARALLEL EXPERT CONSULTATION
|
|
19
|
+
Use the Task tool to consult each identified relevant agent in parallel. For each agent:
|
|
20
|
+
- Use the agent's name as the subagent_type parameter
|
|
21
|
+
- Provide the task description plus any agent-specific context
|
|
22
|
+
- Execute multiple Task tool calls in a single message for parallel processing
|
|
23
|
+
- Example: If agents 'backend-api' and 'database-design' are relevant:
|
|
24
|
+
- Task(subagent_type='backend-api', prompt='[task + API planning context]')
|
|
25
|
+
- Task(subagent_type='database-design', prompt='[task + database planning context]')
|
|
26
|
+
|
|
27
|
+
STEP 5: SYNTHESIZE STRATEGIC PLAN
|
|
28
|
+
After receiving input from all expert agents (or using general knowledge if no agents exist):
|
|
29
|
+
- Integrate expert insights into a unified, coherent plan
|
|
30
|
+
- Organize the plan as a numbered list of implementation steps/tasks
|
|
31
|
+
- Include specific guidance from experts where relevant (cite which agent provided which insight)
|
|
32
|
+
- Address any conflicting recommendations and provide your assessment
|
|
33
|
+
- Focus on strategic, high-level guidance (no exhaustive code implementations)
|
|
34
|
+
- Small code examples (5-10 lines) are OK to illustrate key concepts
|
|
35
|
+
|
|
36
|
+
STEP 6: PRESENT PLAN
|
|
37
|
+
Present the synthesized plan to the user with:
|
|
38
|
+
- Clear implementation steps numbered in logical order
|
|
39
|
+
- Expert contributions attributed appropriately (if agents were consulted)
|
|
40
|
+
- Any important considerations or trade-offs identified
|
|
41
|
+
- Suggested next steps for beginning implementation
|
|
42
|
+
|
|
43
|
+
IMPORTANT EXECUTION NOTES:
|
|
44
|
+
- Identify relevant agents based on their descriptions and the task domain
|
|
45
|
+
- Use parallel Task tool execution when consulting multiple agents (single message with multiple tool calls)
|
|
46
|
+
- Ensure each agent receives context appropriate to their expertise domain
|
|
47
|
+
- Synthesize insights rather than simply concatenating agent responses
|
|
48
|
+
- Keep the plan strategic and actionable
|
|
49
|
+
- If no relevant agents exist, provide a solid plan based on your general knowledge and best practices
|
|
50
|
+
|
|
51
|
+
EXAMPLE PARALLEL EXECUTION:
|
|
52
|
+
If 'backend-api', 'frontend-design', and 'testing' agents are relevant, send one message with three Task tool calls:
|
|
53
|
+
1. Task(subagent_type='backend-api', prompt='[task + backend planning context]')
|
|
54
|
+
2. Task(subagent_type='frontend-design', prompt='[task + frontend planning context]')
|
|
55
|
+
3. Task(subagent_type='testing', prompt='[task + testing strategy context]')
|
|
56
|
+
|
|
57
|
+
This approach ensures you leverage available expert knowledge while remaining functional for planning even without specialized agents."
|
|
58
|
+
) %>
|
data/lib/aircana/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aircana
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Weston Dransfield
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2025-10-
|
|
10
|
+
date: 2025-10-31 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: httparty
|
|
@@ -143,15 +143,11 @@ files:
|
|
|
143
143
|
- lib/aircana/fzf_helper.rb
|
|
144
144
|
- lib/aircana/generators.rb
|
|
145
145
|
- lib/aircana/generators/agents_generator.rb
|
|
146
|
-
- lib/aircana/generators/apply_feedback_command_generator.rb
|
|
147
146
|
- lib/aircana/generators/ask_expert_command_generator.rb
|
|
148
147
|
- lib/aircana/generators/base_generator.rb
|
|
149
|
-
- lib/aircana/generators/execute_command_generator.rb
|
|
150
148
|
- lib/aircana/generators/helpers.rb
|
|
151
149
|
- lib/aircana/generators/hooks_generator.rb
|
|
152
150
|
- lib/aircana/generators/plan_command_generator.rb
|
|
153
|
-
- lib/aircana/generators/record_command_generator.rb
|
|
154
|
-
- lib/aircana/generators/review_command_generator.rb
|
|
155
151
|
- lib/aircana/generators/skills_generator.rb
|
|
156
152
|
- lib/aircana/hooks_manifest.rb
|
|
157
153
|
- lib/aircana/human_logger.rb
|
|
@@ -161,12 +157,8 @@ files:
|
|
|
161
157
|
- lib/aircana/progress_tracker.rb
|
|
162
158
|
- lib/aircana/system_checker.rb
|
|
163
159
|
- lib/aircana/templates/agents/base_agent.erb
|
|
164
|
-
- lib/aircana/templates/commands/apply_feedback.erb
|
|
165
160
|
- lib/aircana/templates/commands/ask_expert.erb
|
|
166
|
-
- lib/aircana/templates/commands/execute.erb
|
|
167
161
|
- lib/aircana/templates/commands/plan.erb
|
|
168
|
-
- lib/aircana/templates/commands/record.erb
|
|
169
|
-
- lib/aircana/templates/commands/review.erb
|
|
170
162
|
- lib/aircana/templates/hooks/bundle_install.erb
|
|
171
163
|
- lib/aircana/templates/hooks/notification_sqs.erb
|
|
172
164
|
- lib/aircana/templates/hooks/post_tool_use.erb
|
|
@@ -1,26 +0,0 @@
|
|
|
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", "apply-feedback.md")
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../generators"
|
|
4
|
-
|
|
5
|
-
module Aircana
|
|
6
|
-
module Generators
|
|
7
|
-
class ExecuteCommandGenerator < 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", "execute.erb")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def default_output_path
|
|
22
|
-
File.join(Aircana.configuration.output_dir, "commands", "execute.md")
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
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", "record.md")
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
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", "review.md")
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<%= helpers.model_instructions(
|
|
2
|
-
"Use the Task tool with subagent_type 'apply-feedback' to apply code review feedback from the previous /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 /review."
|
|
17
|
-
) %>
|
|
@@ -1,15 +0,0 @@
|
|
|
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,19 +0,0 @@
|
|
|
1
|
-
<%= helpers.model_instructions(
|
|
2
|
-
"Use the Task tool with subagent_type 'jira' to append the implementation plan to the Jira ticket description using Jira MCP tools.
|
|
3
|
-
|
|
4
|
-
INSTRUCTIONS FOR JIRA AGENT:
|
|
5
|
-
1. Read the implementation plan from the current context (look for recent planning output)
|
|
6
|
-
2. Get the current ticket description using mcp__jira__getJiraIssue with fields=[\"description\"]
|
|
7
|
-
3. Append the plan to the existing description under a new \"## Implementation Plan\" heading
|
|
8
|
-
4. Update the ticket using mcp__jira__editJiraIssue with the combined description
|
|
9
|
-
5. Format the appended plan section with:
|
|
10
|
-
- Consulted sub-agents
|
|
11
|
-
- Relevant files analyzed
|
|
12
|
-
- Planning timestamp
|
|
13
|
-
- Implementation steps as todo list using `[ ]` format
|
|
14
|
-
6. Provide the ticket URL for easy access
|
|
15
|
-
|
|
16
|
-
CRITICAL: The jira sub-agent must append to the ticket description using mcp__jira__editJiraIssue (NOT create files or comments).
|
|
17
|
-
|
|
18
|
-
IMPORTANT: Delegate all Jira operations to the 'jira' sub-agent using Task tool with subagent_type 'jira'. The Jira ticket key/ID is already in context."
|
|
19
|
-
) %>
|
|
@@ -1,14 +0,0 @@
|
|
|
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 '/apply-feedback' to apply recommended changes
|
|
12
|
-
|
|
13
|
-
IMPORTANT: The review agent will automatically review the HEAD commit. No arguments needed."
|
|
14
|
-
) %>
|