aircana 0.1.0 → 1.1.0.rc1
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 +164 -104
- data/.rubocop.yml +34 -0
- data/CLAUDE.md +54 -9
- data/README.md +31 -19
- data/lib/aircana/cli/app.rb +93 -26
- data/lib/aircana/cli/commands/agents.rb +75 -4
- data/lib/aircana/cli/commands/files.rb +65 -0
- data/lib/aircana/cli/commands/generate.rb +19 -0
- data/lib/aircana/cli/commands/hooks.rb +276 -0
- data/lib/aircana/cli/commands/install.rb +113 -0
- data/lib/aircana/cli/commands/project.rb +156 -0
- data/lib/aircana/cli/help_formatter.rb +90 -0
- data/lib/aircana/cli/subcommand.rb +2 -1
- data/lib/aircana/configuration.rb +2 -1
- data/lib/aircana/contexts/confluence.rb +76 -3
- data/lib/aircana/contexts/manifest.rb +148 -0
- data/lib/aircana/generators/agents_generator.rb +1 -1
- data/lib/aircana/generators/hooks_generator.rb +82 -0
- data/lib/aircana/generators/project_config_generator.rb +54 -0
- data/lib/aircana/symlink_manager.rb +158 -0
- data/lib/aircana/system_checker.rb +10 -0
- data/lib/aircana/templates/hooks/bundle_install.erb +63 -0
- data/lib/aircana/templates/hooks/post_tool_use.erb +49 -0
- data/lib/aircana/templates/hooks/pre_tool_use.erb +43 -0
- data/lib/aircana/templates/hooks/rspec_test.erb +72 -0
- data/lib/aircana/templates/hooks/rubocop_pre_commit.erb +55 -0
- data/lib/aircana/templates/hooks/session_start.erb +127 -0
- data/lib/aircana/templates/hooks/user_prompt_submit.erb +46 -0
- data/lib/aircana/version.rb +1 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64811eb3cd8c51f06884e2f4f13e9c8b95e55b1bae350e558cccde508b3076c9
|
4
|
+
data.tar.gz: 61f3b8425387ada7b5f015d706d65fae1294aeb19d7b25ec35e0a22b3af6b3dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7a10c4f9ec04d77d1dbc96be3aec865acde288865c837839d92d005226489e1e77031d5da2623f4d019c69a28e1855f824415fb3a2362178829e723f8acad87
|
7
|
+
data.tar.gz: 234c4c2743a72b3fe899c234b94bed5e4ac964939dc77f2ba114401421ed660d8b58c18d2e4595523dd76c266dce1470563f7fa2ab53ccbe52a2192b4d28b493
|
data/.rspec_status
CHANGED
@@ -1,106 +1,166 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
------------------------------------------------------------ | ------ | --------------- |
|
3
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:1:1] | passed | 0.
|
4
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:2:1] | passed | 0.
|
5
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:3:1] | passed | 0.
|
6
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:4:1] | passed | 0.
|
7
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:4:2:1] | passed | 0.
|
8
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:5:1] | passed | 0.
|
9
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:2:1] | passed | 0.
|
10
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:2:2] | passed | 0.
|
11
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:1] | passed | 0.
|
12
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:2] | passed | 0.
|
13
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:3] | passed | 0.
|
14
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:4] | passed | 0.
|
15
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:5] | passed | 0.
|
16
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:6] | passed | 0.
|
17
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:7] | passed | 0.
|
18
|
-
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:8] | passed | 0.
|
19
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1] | passed | 0.
|
20
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2] | passed | 0.
|
21
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3] | passed | 0.
|
22
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:2:1] | passed | 0.
|
23
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1] | passed | 0.
|
24
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2] | passed | 0.
|
25
|
-
./spec/aircana/cli/commands/agents_spec.rb[1:2:1] | passed | 0.
|
26
|
-
./spec/aircana/cli/commands/
|
27
|
-
./spec/aircana/cli/commands/
|
28
|
-
./spec/aircana/cli/commands/
|
29
|
-
./spec/aircana/cli/commands/
|
30
|
-
./spec/aircana/cli/commands/
|
31
|
-
./spec/aircana/cli/commands/
|
32
|
-
./spec/aircana/
|
33
|
-
./spec/aircana/
|
34
|
-
./spec/aircana/
|
35
|
-
./spec/aircana/
|
36
|
-
./spec/aircana/
|
37
|
-
./spec/aircana/
|
38
|
-
./spec/aircana/
|
39
|
-
./spec/aircana/
|
40
|
-
./spec/aircana/
|
41
|
-
./spec/aircana/
|
42
|
-
./spec/aircana/
|
43
|
-
./spec/aircana/
|
44
|
-
./spec/aircana/
|
45
|
-
./spec/aircana/
|
46
|
-
./spec/aircana/
|
47
|
-
./spec/aircana/
|
48
|
-
./spec/aircana/
|
49
|
-
./spec/aircana/
|
50
|
-
./spec/aircana/
|
51
|
-
./spec/aircana/
|
52
|
-
./spec/aircana/
|
53
|
-
./spec/aircana/
|
54
|
-
./spec/aircana/
|
55
|
-
./spec/aircana/
|
56
|
-
./spec/aircana/
|
57
|
-
./spec/aircana/
|
58
|
-
./spec/aircana/
|
59
|
-
./spec/aircana/
|
60
|
-
./spec/aircana/
|
61
|
-
./spec/aircana/
|
62
|
-
./spec/aircana/
|
63
|
-
./spec/aircana/
|
64
|
-
./spec/aircana/
|
65
|
-
./spec/aircana/
|
66
|
-
./spec/aircana/
|
67
|
-
./spec/aircana/
|
68
|
-
./spec/aircana/
|
69
|
-
./spec/aircana/
|
70
|
-
./spec/aircana/
|
71
|
-
./spec/aircana/
|
72
|
-
./spec/aircana/
|
73
|
-
./spec/aircana/
|
74
|
-
./spec/aircana/
|
75
|
-
./spec/aircana/
|
76
|
-
./spec/aircana/
|
77
|
-
./spec/aircana/
|
78
|
-
./spec/aircana/
|
79
|
-
./spec/aircana/
|
80
|
-
./spec/aircana/
|
81
|
-
./spec/aircana/
|
82
|
-
./spec/aircana/
|
83
|
-
./spec/aircana/
|
84
|
-
./spec/aircana/
|
85
|
-
./spec/aircana/
|
86
|
-
./spec/aircana/
|
87
|
-
./spec/aircana/
|
88
|
-
./spec/aircana/
|
89
|
-
./spec/aircana/
|
90
|
-
./spec/aircana/
|
91
|
-
./spec/aircana/
|
92
|
-
./spec/aircana/
|
93
|
-
./spec/aircana/
|
94
|
-
./spec/aircana/
|
95
|
-
./spec/aircana/
|
96
|
-
./spec/aircana/
|
97
|
-
./spec/aircana/
|
98
|
-
./spec/aircana/
|
99
|
-
./spec/aircana/
|
100
|
-
./spec/aircana/
|
101
|
-
./spec/aircana/
|
102
|
-
./spec/aircana/
|
103
|
-
./spec/aircana/
|
104
|
-
./spec/aircana/
|
105
|
-
./spec/
|
106
|
-
./spec/
|
3
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:1:1] | passed | 0.00772 seconds |
|
4
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:2:1] | passed | 0.00102 seconds |
|
5
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:3:1] | passed | 0.00078 seconds |
|
6
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:4:1] | passed | 0.00248 seconds |
|
7
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:4:2:1] | passed | 0.01424 seconds |
|
8
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:1:5:1] | passed | 0.00263 seconds |
|
9
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:2:1] | passed | 0.00191 seconds |
|
10
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:2:2] | passed | 0.00177 seconds |
|
11
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:1] | passed | 0.00062 seconds |
|
12
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:2] | passed | 0.00063 seconds |
|
13
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:3] | passed | 0.00069 seconds |
|
14
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:4] | passed | 0.00063 seconds |
|
15
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:5] | passed | 0.00061 seconds |
|
16
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:6] | passed | 0.00063 seconds |
|
17
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:7] | passed | 0.0006 seconds |
|
18
|
+
./spec/aircana/cli/commands/add_directory_spec.rb[1:3:8] | passed | 0.00063 seconds |
|
19
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1] | passed | 0.00042 seconds |
|
20
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2] | passed | 0.00032 seconds |
|
21
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3] | passed | 0.00044 seconds |
|
22
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:2:1] | passed | 0.00124 seconds |
|
23
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1] | passed | 0.00035 seconds |
|
24
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2] | passed | 0.00031 seconds |
|
25
|
+
./spec/aircana/cli/commands/agents_spec.rb[1:2:1] | passed | 0.00021 seconds |
|
26
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:1:1] | passed | 0.00089 seconds |
|
27
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:1:1] | passed | 0.00087 seconds |
|
28
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:2:1] | passed | 0.00125 seconds |
|
29
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:2:1:1] | passed | 0.00092 seconds |
|
30
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:2:2:1] | passed | 0.00098 seconds |
|
31
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:3:1:1] | passed | 0.00079 seconds |
|
32
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:3:2:1] | passed | 0.00145 seconds |
|
33
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:4:1] | passed | 0.00411 seconds |
|
34
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:4:2:1] | passed | 0.00155 seconds |
|
35
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:1:1] | passed | 0.00071 seconds |
|
36
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:2:1] | passed | 0.00093 seconds |
|
37
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:3:1] | passed | 0.00124 seconds |
|
38
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:5:4:1] | passed | 0.00087 seconds |
|
39
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:6:1:1] | passed | 0.00066 seconds |
|
40
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:6:2:1] | passed | 0.00116 seconds |
|
41
|
+
./spec/aircana/cli/commands/hooks_spec.rb[1:7:1] | passed | 0.0006 seconds |
|
42
|
+
./spec/aircana/cli/commands/install_spec.rb[1:1:1:1] | passed | 0.0011 seconds |
|
43
|
+
./spec/aircana/cli/commands/install_spec.rb[1:1:2:1] | passed | 0.00182 seconds |
|
44
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:1:1] | passed | 0.00368 seconds |
|
45
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:2:1] | passed | 0.00227 seconds |
|
46
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:3:1] | passed | 0.00197 seconds |
|
47
|
+
./spec/aircana/cli/commands/install_spec.rb[1:2:4:1] | passed | 0.00264 seconds |
|
48
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:1] | passed | 0.00229 seconds |
|
49
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:2:1] | passed | 0.00228 seconds |
|
50
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:3:1] | passed | 0.00224 seconds |
|
51
|
+
./spec/aircana/cli/commands/install_spec.rb[1:3:4:1] | passed | 0.00231 seconds |
|
52
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:1] | passed | 0.00079 seconds |
|
53
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:2] | passed | 0.00076 seconds |
|
54
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:3] | passed | 0.0009 seconds |
|
55
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:4] | passed | 0.00085 seconds |
|
56
|
+
./spec/aircana/cli/commands/install_spec.rb[1:4:5] | passed | 0.00082 seconds |
|
57
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:1:1] | passed | 0.00114 seconds |
|
58
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:2:1] | passed | 0.00089 seconds |
|
59
|
+
./spec/aircana/cli/commands/install_spec.rb[1:5:3:1] | passed | 0.00136 seconds |
|
60
|
+
./spec/aircana/cli/commands/install_spec.rb[1:6:1] | passed | 0.00117 seconds |
|
61
|
+
./spec/aircana/cli/commands/plan_spec.rb[1:1:1:1] | passed | 0.00687 seconds |
|
62
|
+
./spec/aircana/cli/commands/plan_spec.rb[1:1:2:1] | passed | 0.00506 seconds |
|
63
|
+
./spec/aircana/cli/commands/plan_spec.rb[1:1:3:1] | passed | 0.00052 seconds |
|
64
|
+
./spec/aircana/cli/commands/work_spec.rb[1:1:1:1] | passed | 0.00558 seconds |
|
65
|
+
./spec/aircana/cli/commands/work_spec.rb[1:1:2:1] | passed | 0.00574 seconds |
|
66
|
+
./spec/aircana/cli/commands/work_spec.rb[1:1:3:1] | passed | 0.00056 seconds |
|
67
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00021 seconds |
|
68
|
+
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00007 seconds |
|
69
|
+
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.0001 seconds |
|
70
|
+
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00019 seconds |
|
71
|
+
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00012 seconds |
|
72
|
+
./spec/aircana/configuration_spec.rb[1:5:2] | passed | 0.00008 seconds |
|
73
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00648 seconds |
|
74
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00066 seconds |
|
75
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00155 seconds |
|
76
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00019 seconds |
|
77
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00013 seconds |
|
78
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00012 seconds |
|
79
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00047 seconds |
|
80
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00047 seconds |
|
81
|
+
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.0013 seconds |
|
82
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00106 seconds |
|
83
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00102 seconds |
|
84
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00096 seconds |
|
85
|
+
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00101 seconds |
|
86
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00136 seconds |
|
87
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00158 seconds |
|
88
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00126 seconds |
|
89
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00096 seconds |
|
90
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00084 seconds |
|
91
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 1.02 seconds |
|
92
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00189 seconds |
|
93
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00188 seconds |
|
94
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00039 seconds |
|
95
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.0015 seconds |
|
96
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00208 seconds |
|
97
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00217 seconds |
|
98
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00051 seconds |
|
99
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00185 seconds |
|
100
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00046 seconds |
|
101
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00046 seconds |
|
102
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00054 seconds |
|
103
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00051 seconds |
|
104
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.0006 seconds |
|
105
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00043 seconds |
|
106
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00068 seconds |
|
107
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00075 seconds |
|
108
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00084 seconds |
|
109
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00032 seconds |
|
110
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0003 seconds |
|
111
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00029 seconds |
|
112
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.0003 seconds |
|
113
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00022 seconds |
|
114
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:1:1] | passed | 0.00009 seconds |
|
115
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:2:1] | passed | 0.00096 seconds |
|
116
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:2:2] | passed | 0.00032 seconds |
|
117
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:1] | passed | 0.00011 seconds |
|
118
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:1:2] | passed | 0.00008 seconds |
|
119
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:2:1] | passed | 0.00008 seconds |
|
120
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:3:2:2] | passed | 0.00008 seconds |
|
121
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:4:1:1] | passed | 0.00009 seconds |
|
122
|
+
./spec/aircana/generators/agents_generator_spec.rb[1:4:2:1] | passed | 0.00008 seconds |
|
123
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00006 seconds |
|
124
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00006 seconds |
|
125
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00077 seconds |
|
126
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.0005 seconds |
|
127
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00018 seconds |
|
128
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.0002 seconds |
|
129
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00008 seconds |
|
130
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00134 seconds |
|
131
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00048 seconds |
|
132
|
+
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00014 seconds |
|
133
|
+
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00009 seconds |
|
134
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00009 seconds |
|
135
|
+
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00009 seconds |
|
136
|
+
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00007 seconds |
|
137
|
+
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00008 seconds |
|
138
|
+
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00007 seconds |
|
139
|
+
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00007 seconds |
|
140
|
+
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00007 seconds |
|
141
|
+
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00007 seconds |
|
142
|
+
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00008 seconds |
|
143
|
+
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00006 seconds |
|
144
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00086 seconds |
|
145
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00072 seconds |
|
146
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0006 seconds |
|
147
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.0006 seconds |
|
148
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00068 seconds |
|
149
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00061 seconds |
|
150
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00066 seconds |
|
151
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00074 seconds |
|
152
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00058 seconds |
|
153
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00043 seconds |
|
154
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00076 seconds |
|
155
|
+
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00064 seconds |
|
156
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00077 seconds |
|
157
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00098 seconds |
|
158
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00038 seconds |
|
159
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.0004 seconds |
|
160
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00035 seconds |
|
161
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00039 seconds |
|
162
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00044 seconds |
|
163
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00049 seconds |
|
164
|
+
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00028 seconds |
|
165
|
+
./spec/aircana_spec.rb[1:1] | passed | 0.0001 seconds |
|
166
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.0012 seconds |
|
data/.rubocop.yml
CHANGED
@@ -27,7 +27,41 @@ Metrics/ClassLength:
|
|
27
27
|
- 'lib/aircana/human_logger.rb'
|
28
28
|
- 'lib/aircana/system_checker.rb'
|
29
29
|
- 'lib/aircana/cli/commands/add_directory.rb'
|
30
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
31
|
+
- 'lib/aircana/cli/commands/install.rb'
|
32
|
+
- 'lib/aircana/contexts/confluence.rb'
|
33
|
+
- 'lib/aircana/contexts/manifest.rb'
|
34
|
+
- 'lib/aircana/symlink_manager.rb'
|
30
35
|
|
31
36
|
Metrics/ModuleLength:
|
32
37
|
Exclude:
|
33
38
|
- 'lib/aircana/cli/commands/add_directory.rb'
|
39
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
40
|
+
- 'lib/aircana/cli/commands/install.rb'
|
41
|
+
|
42
|
+
Metrics/MethodLength:
|
43
|
+
Exclude:
|
44
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
45
|
+
- 'lib/aircana/cli/commands/install.rb'
|
46
|
+
- 'lib/aircana/cli/commands/project.rb'
|
47
|
+
- 'lib/aircana/generators/project_config_generator.rb'
|
48
|
+
- 'lib/aircana/symlink_manager.rb'
|
49
|
+
- 'lib/aircana/contexts/confluence.rb'
|
50
|
+
- 'lib/aircana/contexts/manifest.rb'
|
51
|
+
|
52
|
+
Metrics/AbcSize:
|
53
|
+
Exclude:
|
54
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
55
|
+
- 'lib/aircana/cli/commands/install.rb'
|
56
|
+
- 'lib/aircana/cli/commands/project.rb'
|
57
|
+
- 'lib/aircana/symlink_manager.rb'
|
58
|
+
|
59
|
+
Metrics/CyclomaticComplexity:
|
60
|
+
Exclude:
|
61
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
62
|
+
- 'lib/aircana/cli/commands/project.rb'
|
63
|
+
|
64
|
+
Metrics/PerceivedComplexity:
|
65
|
+
Exclude:
|
66
|
+
- 'lib/aircana/cli/commands/hooks.rb'
|
67
|
+
- 'lib/aircana/cli/commands/project.rb'
|
data/CLAUDE.md
CHANGED
@@ -11,23 +11,37 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
11
11
|
- `bin/console` - Interactive prompt for experimentation
|
12
12
|
|
13
13
|
### Testing and Quality
|
14
|
-
- `rake spec` or `bundle exec rspec` - Run tests
|
14
|
+
- `rake spec` or `bundle exec rspec` - Run all tests
|
15
|
+
- `bundle exec rspec spec/aircana/cli/commands/agents_spec.rb` - Run specific test file
|
16
|
+
- `bundle exec rspec spec/aircana/cli/commands/agents_spec.rb:15` - Run test at specific line
|
17
|
+
- `bundle exec rspec --format documentation` - Run tests with detailed output
|
15
18
|
- `bundle exec rubocop` - Run linter
|
19
|
+
- `bundle exec rubocop -a` - Run linter with auto-fix
|
16
20
|
- `rake` - Run both tests and linter (default task)
|
17
21
|
|
18
22
|
### Gem Management
|
23
|
+
- `bundle exec rake build` - Build gem package
|
19
24
|
- `bundle exec rake install` - Install gem locally
|
20
25
|
- `bundle exec rake release` - Release new version (updates version, creates git tag, pushes to rubygems)
|
21
26
|
|
22
27
|
### Aircana CLI Commands
|
23
|
-
- `aircana add-files` - Interactively add files to current context
|
28
|
+
- `aircana add-files` - Interactively add files to current context (uses fzf)
|
24
29
|
- `aircana add-dir [DIRECTORY_PATH]` - Add all files from directory to context
|
25
30
|
- `aircana clear-files` - Remove all files from relevant files
|
31
|
+
- `aircana doctor` - Check system health and dependencies
|
32
|
+
- `aircana doctor --verbose` - Show detailed dependency information
|
26
33
|
- `aircana dump-context <agent_name>` - Dump context for specified agent
|
27
34
|
- `aircana generate` - Generate all configured files
|
28
35
|
- `aircana install` - Install generated files to Claude Code config
|
29
|
-
- `aircana
|
30
|
-
- `aircana
|
36
|
+
- `aircana plan` - Launch Claude Code with planner agent (experimental)
|
37
|
+
- `aircana work` - Launch Claude Code with worker agent (experimental)
|
38
|
+
- `aircana agents create` - Create a new agent interactively
|
39
|
+
- `aircana agents refresh <agent>` - Refresh agent knowledge from Confluence
|
40
|
+
- `aircana hooks list` - List all available hooks
|
41
|
+
- `aircana hooks enable <hook>` - Enable a specific hook
|
42
|
+
- `aircana hooks disable <hook>` - Disable a specific hook
|
43
|
+
- `aircana hooks create` - Create custom hook
|
44
|
+
- `aircana hooks status` - Show hook configuration status
|
31
45
|
|
32
46
|
## Architecture
|
33
47
|
|
@@ -35,24 +49,55 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
35
49
|
Aircana is a Ruby gem that provides context management and workflow utilities for AI agents, specifically Claude Code. The main components:
|
36
50
|
|
37
51
|
- **CLI Layer** (`lib/aircana/cli/`): Thor-based command line interface with subcommands
|
38
|
-
-
|
39
|
-
-
|
52
|
+
- `app.rb`: Main Thor application defining all commands
|
53
|
+
- `subcommand.rb`: Base class for subcommands
|
54
|
+
- `shell_command.rb`: Shell command execution utilities
|
55
|
+
- `commands/`: Individual command implementations
|
56
|
+
- **Contexts** (`lib/aircana/contexts/`): Manages different types of context
|
57
|
+
- `relevant_files.rb`: Manages current working file set
|
58
|
+
- `confluence.rb`: Handles Confluence page fetching and caching
|
59
|
+
- `confluence_content.rb`: Processes Confluence content
|
60
|
+
- `local.rb`: Local file context management
|
61
|
+
- **Generators** (`lib/aircana/generators/`): Template generation system
|
62
|
+
- `base_generator.rb`: Base class for all generators
|
63
|
+
- `agents_generator.rb`: Generates agent configurations
|
64
|
+
- `hooks_generator.rb`: Generates hook configurations
|
65
|
+
- `relevant_files_command_generator.rb`: Generates file commands
|
40
66
|
- **Configuration** (`lib/aircana/configuration.rb`): Centralized configuration management
|
67
|
+
- **Support Classes**:
|
68
|
+
- `human_logger.rb`: User-friendly logging output
|
69
|
+
- `system_checker.rb`: Dependency validation
|
70
|
+
- `agent.rb`: Agent model and persistence
|
41
71
|
|
42
72
|
### Key Concepts
|
43
73
|
- **Relevant Files**: Current working set of important files stored in `.aircana/relevant_files/`
|
44
|
-
- **Agents**: Knowledge encapsulation with
|
74
|
+
- **Agents**: Knowledge encapsulation with domain expertise, Confluence sync, and model customization
|
75
|
+
- **Hooks**: Claude Code integration points for automated workflows
|
45
76
|
- **Context Management**: Integration with Claude Code through generated templates and configurations
|
46
77
|
|
47
78
|
### File Organization
|
48
79
|
- Configuration files stored in `~/.aircana` (global) and `.aircana/` (project-local)
|
49
80
|
- Claude Code integration through `~/.claude` and `./.claude` directories
|
50
81
|
- Generated output goes to `~/.aircana/aircana.out` by default
|
82
|
+
- Agent knowledge cached in `.aircana/agents/<agent_name>/`
|
83
|
+
- Hooks stored in `.aircana/hooks/`
|
84
|
+
- Relevant files tracked in `.aircana/relevant_files/`
|
51
85
|
|
52
86
|
### Dependencies
|
53
|
-
- Thor (~> 0.19.1) for CLI framework
|
87
|
+
- Thor (~> 0.19.1) for CLI framework
|
54
88
|
- tty-prompt (~> 0.23.1) for interactive prompts
|
55
89
|
- Ruby >= 3.3.0 required
|
90
|
+
- External tools: git, fzf (required), bat, fd (optional)
|
56
91
|
|
57
92
|
### Testing
|
58
|
-
Uses RSpec for testing with specs in `spec/` directory
|
93
|
+
- Uses RSpec for testing with specs in `spec/` directory
|
94
|
+
- Test files follow naming convention: `spec/<path>/<file>_spec.rb`
|
95
|
+
- Rubocop configured with custom rules in `.rubocop.yml`
|
96
|
+
- String style enforced as double quotes
|
97
|
+
|
98
|
+
### Confluence Integration
|
99
|
+
When configured, agents can sync knowledge from Confluence:
|
100
|
+
- Set environment variables: `CONFLUENCE_BASE_URL`, `CONFLUENCE_USERNAME`, `CONFLUENCE_API_TOKEN`
|
101
|
+
- Pages are fetched based on agent name as label
|
102
|
+
- Content cached locally for offline access
|
103
|
+
- Refresh with `aircana agents refresh <agent>`
|
data/README.md
CHANGED
@@ -88,12 +88,13 @@ Create Claude Code agents with:
|
|
88
88
|
2. **Set up your project**:
|
89
89
|
```bash
|
90
90
|
cd your-project
|
91
|
+
aircana generate
|
91
92
|
aircana install # Set up Aircana integration in this project
|
92
93
|
```
|
93
94
|
|
94
95
|
3. **Add files to context**:
|
95
96
|
```bash
|
96
|
-
aircana add
|
97
|
+
aircana files add # Interactive selection
|
97
98
|
```
|
98
99
|
|
99
100
|
Then in Claude Code, include them with whenever you want to reload the files into the current context:
|
@@ -106,13 +107,10 @@ Create Claude Code agents with:
|
|
106
107
|
aircana agents create # Tag Confluence pages with the agent's name before or after creation to pull that knowledge into the agent's knowledge base.
|
107
108
|
```
|
108
109
|
|
109
|
-
5. **
|
110
|
-
|
111
|
-
_These command are still very much a work in progress_
|
112
|
-
|
110
|
+
5. **View your current context**:
|
113
111
|
```bash
|
114
|
-
aircana
|
115
|
-
aircana
|
112
|
+
aircana files list # See all tracked files
|
113
|
+
aircana agents list # See all configured agents
|
116
114
|
```
|
117
115
|
|
118
116
|
## Confluence Setup (Optional)
|
@@ -208,30 +206,44 @@ aircana agents refresh backend-api
|
|
208
206
|
|
209
207
|
### File Management
|
210
208
|
```bash
|
211
|
-
aircana add
|
212
|
-
aircana add-dir [PATH]
|
213
|
-
aircana clear
|
214
|
-
aircana
|
209
|
+
aircana files add # Interactively select files to add to context
|
210
|
+
aircana files add-dir [PATH] # Add all files from directory to context
|
211
|
+
aircana files clear # Clear current file context
|
212
|
+
aircana files list # Show current relevant files
|
215
213
|
```
|
216
214
|
|
217
215
|
### Agent Management
|
218
216
|
```bash
|
219
|
-
aircana agents create
|
217
|
+
aircana agents create # Create new agent interactively
|
220
218
|
aircana agents refresh [AGENT] # Sync agent knowledge from Confluence
|
219
|
+
aircana agents list # List all configured agents
|
221
220
|
```
|
222
221
|
|
223
|
-
###
|
222
|
+
### Hook Management
|
224
223
|
```bash
|
225
|
-
aircana
|
226
|
-
aircana
|
227
|
-
aircana
|
228
|
-
aircana
|
224
|
+
aircana hooks list # List all available and installed hooks
|
225
|
+
aircana hooks enable [HOOK] # Enable a specific hook
|
226
|
+
aircana hooks disable [HOOK] # Disable a specific hook
|
227
|
+
aircana hooks create # Create custom hook
|
228
|
+
aircana hooks status # Show hook configuration status
|
229
|
+
```
|
230
|
+
|
231
|
+
### Project Management
|
232
|
+
```bash
|
233
|
+
aircana project init # Initialize multi-root project configuration
|
234
|
+
aircana project add [PATH] # Add folder to multi-root configuration
|
235
|
+
aircana project remove [PATH] # Remove folder from multi-root configuration
|
236
|
+
aircana project list # List all configured folders and agents
|
237
|
+
aircana project sync # Manually sync symlinks for multi-root agents
|
229
238
|
```
|
230
239
|
|
231
240
|
### System
|
232
241
|
```bash
|
233
|
-
aircana
|
234
|
-
aircana
|
242
|
+
aircana generate # Generate Claude Code configuration files
|
243
|
+
aircana install # Install generated files to Claude Code
|
244
|
+
aircana doctor # Check system health and dependencies
|
245
|
+
aircana doctor --verbose # Show detailed dependency information
|
246
|
+
aircana dump-context [AGENT] # View current context for agent
|
235
247
|
```
|
236
248
|
|
237
249
|
## Development
|