aircana 4.0.0.rc3 → 4.0.0.rc4
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 +131 -131
- data/CLAUDE.md +30 -23
- data/lib/aircana/cli/commands/init.rb +14 -7
- data/lib/aircana/cli/commands/kb.rb +12 -2
- data/lib/aircana/configuration.rb +12 -1
- data/lib/aircana/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d5be7386f157583696f07f41414c21556900adfde8849e19d54057e3f5755e
|
4
|
+
data.tar.gz: 390ffd1596c5e7057fd457b165a4efa2c6a6bd067149948d0d2fc6812ee891da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 290926c71151382da45dd70d9a820d31d94d6df32e30ae38eba014c05e9300730d58f9a05c6032f07facd705babec3b02b53c13231ec5c871fbbeb884d906788
|
7
|
+
data.tar.gz: d9fce8dce7b118b534d8cae0717c233b61fd58c7b0bf168ad7345dff645955fed7c71b6f034c78a14abaddade1ae2b8b226aaac9eabc00fd9228bac7f80707e4
|
data/.rspec_status
CHANGED
@@ -1,192 +1,192 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
----------------------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.
|
4
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.
|
5
|
-
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.
|
6
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.
|
7
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.
|
8
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.
|
9
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.
|
10
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.
|
11
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.
|
12
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.
|
13
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.
|
14
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.
|
15
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.
|
16
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.
|
17
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.
|
18
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.
|
19
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.
|
20
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.
|
21
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.
|
22
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.
|
23
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.
|
24
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.
|
25
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.
|
26
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.
|
3
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.0061 seconds |
|
4
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00207 seconds |
|
5
|
+
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00318 seconds |
|
6
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00165 seconds |
|
7
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00129 seconds |
|
8
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00134 seconds |
|
9
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00135 seconds |
|
10
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00099 seconds |
|
11
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00093 seconds |
|
12
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00096 seconds |
|
13
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00692 seconds |
|
14
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.0011 seconds |
|
15
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00285 seconds |
|
16
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00215 seconds |
|
17
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00264 seconds |
|
18
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00213 seconds |
|
19
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00028 seconds |
|
20
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00049 seconds |
|
21
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00028 seconds |
|
22
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00087 seconds |
|
23
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00087 seconds |
|
24
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00064 seconds |
|
25
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00016 seconds |
|
26
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00076 seconds |
|
27
27
|
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00014 seconds |
|
28
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.
|
29
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.
|
30
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.
|
31
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.
|
32
|
-
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.
|
28
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.00007 seconds |
|
29
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00007 seconds |
|
30
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00084 seconds |
|
31
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00018 seconds |
|
32
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00009 seconds |
|
33
33
|
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00005 seconds |
|
34
34
|
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
35
35
|
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
36
36
|
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
37
37
|
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00004 seconds |
|
38
|
-
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.
|
39
|
-
./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.
|
38
|
+
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00004 seconds |
|
39
|
+
./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.00021 seconds |
|
40
40
|
./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.00017 seconds |
|
41
|
-
./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.
|
41
|
+
./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.00017 seconds |
|
42
42
|
./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.00005 seconds |
|
43
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.
|
44
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.
|
45
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.
|
43
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00243 seconds |
|
44
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.0053 seconds |
|
45
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00175 seconds |
|
46
46
|
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00034 seconds |
|
47
47
|
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00026 seconds |
|
48
48
|
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00024 seconds |
|
49
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.
|
50
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.
|
51
|
-
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.
|
52
|
-
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.
|
53
|
-
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.
|
54
|
-
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.
|
49
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00046 seconds |
|
50
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00074 seconds |
|
51
|
+
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00024 seconds |
|
52
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00014 seconds |
|
53
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00011 seconds |
|
54
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00012 seconds |
|
55
55
|
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00011 seconds |
|
56
|
-
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.
|
57
|
-
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.
|
58
|
-
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.
|
59
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.
|
60
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.
|
61
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.
|
56
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00011 seconds |
|
57
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00017 seconds |
|
58
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00014 seconds |
|
59
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00021 seconds |
|
60
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00026 seconds |
|
61
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.00016 seconds |
|
62
62
|
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00017 seconds |
|
63
63
|
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00015 seconds |
|
64
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.
|
65
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.
|
66
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.
|
67
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.
|
68
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.
|
64
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00015 seconds |
|
65
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00007 seconds |
|
66
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00016 seconds |
|
67
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00016 seconds |
|
68
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00015 seconds |
|
69
69
|
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00007 seconds |
|
70
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.
|
71
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.
|
72
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.
|
73
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.
|
70
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00013 seconds |
|
71
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00006 seconds |
|
72
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00008 seconds |
|
73
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00007 seconds |
|
74
74
|
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00007 seconds |
|
75
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.
|
75
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00019 seconds |
|
76
76
|
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00007 seconds |
|
77
77
|
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00007 seconds |
|
78
78
|
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00007 seconds |
|
79
79
|
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00007 seconds |
|
80
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.
|
81
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.
|
82
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.
|
83
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.
|
84
|
-
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.
|
80
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00006 seconds |
|
81
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00006 seconds |
|
82
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00014 seconds |
|
83
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00013 seconds |
|
84
|
+
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00019 seconds |
|
85
85
|
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00023 seconds |
|
86
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.
|
87
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.
|
86
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00027 seconds |
|
87
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00015 seconds |
|
88
88
|
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00013 seconds |
|
89
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.
|
90
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.
|
91
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.
|
92
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.
|
93
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.
|
94
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.
|
89
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00018 seconds |
|
90
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00014 seconds |
|
91
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.0002 seconds |
|
92
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00031 seconds |
|
93
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.0003 seconds |
|
94
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00032 seconds |
|
95
95
|
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00028 seconds |
|
96
96
|
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00016 seconds |
|
97
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.
|
97
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00015 seconds |
|
98
98
|
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00014 seconds |
|
99
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.
|
100
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.
|
101
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.
|
99
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00054 seconds |
|
100
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00015 seconds |
|
101
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00041 seconds |
|
102
102
|
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.0003 seconds |
|
103
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.
|
103
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00028 seconds |
|
104
104
|
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00028 seconds |
|
105
105
|
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00015 seconds |
|
106
106
|
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00013 seconds |
|
107
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.
|
108
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.
|
109
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.
|
107
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00021 seconds |
|
108
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00019 seconds |
|
109
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00022 seconds |
|
110
110
|
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00028 seconds |
|
111
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.
|
112
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.
|
113
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.
|
114
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.
|
115
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.
|
111
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00027 seconds |
|
112
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00014 seconds |
|
113
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00013 seconds |
|
114
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00017 seconds |
|
115
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00013 seconds |
|
116
116
|
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.0001 seconds |
|
117
117
|
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
118
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.
|
119
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00047 seconds |
|
120
120
|
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00024 seconds |
|
121
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.
|
121
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00012 seconds |
|
122
122
|
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00012 seconds |
|
123
123
|
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
|
124
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.
|
125
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.
|
126
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.
|
127
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.
|
128
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.
|
129
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.
|
130
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.
|
124
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00059 seconds |
|
125
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00019 seconds |
|
126
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00352 seconds |
|
127
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00035 seconds |
|
128
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00033 seconds |
|
129
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00014 seconds |
|
130
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.0001 seconds |
|
131
131
|
./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00026 seconds |
|
132
|
-
./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.
|
132
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00095 seconds |
|
133
133
|
./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00013 seconds |
|
134
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.
|
134
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00016 seconds |
|
135
135
|
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00008 seconds |
|
136
136
|
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.00007 seconds |
|
137
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.
|
138
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.
|
137
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00021 seconds |
|
138
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00022 seconds |
|
139
139
|
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00018 seconds |
|
140
140
|
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00008 seconds |
|
141
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.
|
141
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.00032 seconds |
|
142
142
|
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00008 seconds |
|
143
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.
|
144
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.
|
145
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.
|
143
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00006 seconds |
|
144
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00007 seconds |
|
145
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00006 seconds |
|
146
146
|
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00006 seconds |
|
147
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.
|
148
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.
|
149
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.
|
150
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.
|
151
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.
|
152
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.
|
147
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00005 seconds |
|
148
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00006 seconds |
|
149
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00007 seconds |
|
150
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00007 seconds |
|
151
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00007 seconds |
|
152
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00007 seconds |
|
153
153
|
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00007 seconds |
|
154
154
|
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00007 seconds |
|
155
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.
|
156
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.
|
155
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00006 seconds |
|
156
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00055 seconds |
|
157
157
|
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00032 seconds |
|
158
|
-
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.
|
159
|
-
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.
|
160
|
-
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.
|
158
|
+
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00009 seconds |
|
159
|
+
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00005 seconds |
|
160
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00005 seconds |
|
161
161
|
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00005 seconds |
|
162
162
|
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
163
163
|
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00004 seconds |
|
164
164
|
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00004 seconds |
|
165
165
|
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00004 seconds |
|
166
166
|
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00004 seconds |
|
167
|
-
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.
|
167
|
+
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00003 seconds |
|
168
168
|
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00004 seconds |
|
169
169
|
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00004 seconds |
|
170
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.
|
170
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00067 seconds |
|
171
171
|
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00045 seconds |
|
172
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.
|
173
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.
|
174
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.
|
175
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.
|
176
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.
|
177
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.
|
178
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.
|
179
|
-
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.
|
172
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00041 seconds |
|
173
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00041 seconds |
|
174
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00047 seconds |
|
175
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.0004 seconds |
|
176
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00047 seconds |
|
177
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00042 seconds |
|
178
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00041 seconds |
|
179
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00027 seconds |
|
180
180
|
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00025 seconds |
|
181
181
|
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00038 seconds |
|
182
|
-
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.
|
183
|
-
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.
|
184
|
-
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.
|
185
|
-
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.
|
186
|
-
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.
|
187
|
-
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.
|
188
|
-
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.
|
189
|
-
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.
|
190
|
-
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.
|
182
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00053 seconds |
|
183
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.0008 seconds |
|
184
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00028 seconds |
|
185
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00026 seconds |
|
186
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00024 seconds |
|
187
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00027 seconds |
|
188
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00029 seconds |
|
189
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00035 seconds |
|
190
|
+
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00021 seconds |
|
191
191
|
./spec/aircana_spec.rb[1:1] | passed | 0.00004 seconds |
|
192
|
-
./spec/aircana_spec.rb[1:2] | passed | 0.
|
192
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.0006 seconds |
|
data/CLAUDE.md
CHANGED
@@ -104,9 +104,10 @@ Aircana is a Ruby gem that creates and manages Claude Code plugins with knowledg
|
|
104
104
|
- **Configuration** (`lib/aircana/configuration.rb`): Path resolution system
|
105
105
|
- Plugin root detection via environment variables (AIRCANA_PLUGIN_ROOT, CLAUDE_PLUGIN_ROOT)
|
106
106
|
- Plugin-aware paths (commands, skills, hooks directories)
|
107
|
-
-
|
107
|
+
- Conditional skills directory location:
|
108
|
+
- Plugin mode (has `.claude-plugin/plugin.json`): `skills/` (Claude Code standard)
|
109
|
+
- Non-plugin mode (one-off usage): `.claude/skills/` (local development)
|
108
110
|
- Automatic plugin name extraction from plugin.json
|
109
|
-
- Resolves to `~/.claude/skills/<kb-name>/` for knowledge storage
|
110
111
|
|
111
112
|
- **LLM Integration**:
|
112
113
|
- `llm/claude_client.rb`: Claude API client for web title generation
|
@@ -126,32 +127,39 @@ Aircana is a Ruby gem that creates and manages Claude Code plugins with knowledg
|
|
126
127
|
- **Commands**: Custom slash commands for workflow automation
|
127
128
|
|
128
129
|
### File Organization
|
129
|
-
- **Plugin Structure
|
130
|
+
- **Plugin Structure** (when in plugin mode):
|
130
131
|
- `.claude-plugin/plugin.json` - Plugin manifest with metadata and versioning
|
131
|
-
- `agents/` - Knowledge base
|
132
|
+
- `agents/` - Knowledge base manifests (metadata about knowledge sources)
|
132
133
|
- `agents/<kb-name>/manifest.json` - Tracks knowledge sources per KB
|
133
|
-
- `
|
134
|
+
- `skills/` - Knowledge base SKILL.md files (Claude Code reads from here)
|
135
|
+
- `skills/<kb-name>/SKILL.md` - Main skill definition file
|
136
|
+
- `skills/<kb-name>/*.md` - Knowledge content (Confluence pages, web articles)
|
134
137
|
- `commands/` - Slash command markdown files
|
135
138
|
- `hooks/` - hooks.json manifest defining hook configurations
|
136
139
|
- `scripts/` - Hook scripts and utility scripts
|
137
140
|
|
141
|
+
- **Non-Plugin Structure** (one-off usage outside a plugin):
|
142
|
+
- `.claude/skills/` - All KB files stored here
|
143
|
+
- `.claude/skills/<kb-name>/manifest.json` - KB manifest
|
144
|
+
- `.claude/skills/<kb-name>/SKILL.md` - Skill definition
|
145
|
+
- `.claude/skills/<kb-name>/*.md` - Knowledge content
|
146
|
+
|
138
147
|
- **Global Configuration**:
|
139
148
|
- `~/.aircana/` - Global Aircana configuration directory
|
140
149
|
- `~/.aircana/aircana.out/` - Generated templates output directory
|
141
|
-
- `~/.claude/skills/` - Runtime knowledge base storage
|
142
150
|
|
143
151
|
- **Knowledge Storage Architecture**:
|
144
|
-
- **
|
145
|
-
-
|
146
|
-
-
|
147
|
-
-
|
148
|
-
|
149
|
-
-
|
150
|
-
|
151
|
-
-
|
152
|
-
|
153
|
-
|
154
|
-
|
152
|
+
- **Plugin Mode**:
|
153
|
+
- Manifests: `agents/<kb-name>/manifest.json` (version controlled)
|
154
|
+
- SKILL.md: `skills/<kb-name>/SKILL.md` (version controlled or gitignored based on KB type)
|
155
|
+
- Knowledge content: `skills/<kb-name>/*.md`
|
156
|
+
- Remote KBs: `skills/<kb-name>/` added to .gitignore (not version controlled)
|
157
|
+
- Local KBs: `skills/<kb-name>/` version controlled (team collaboration)
|
158
|
+
- **Non-Plugin Mode**:
|
159
|
+
- Everything in `.claude/skills/<kb-name>/`:
|
160
|
+
- `manifest.json` - KB manifest
|
161
|
+
- `SKILL.md` - Skill definition
|
162
|
+
- `*.md` - Knowledge content
|
155
163
|
- Team members can refresh knowledge independently
|
156
164
|
- Format:
|
157
165
|
```json
|
@@ -232,9 +240,9 @@ end
|
|
232
240
|
|
233
241
|
**Manifest-Based Knowledge Tracking**:
|
234
242
|
Each knowledge base has a `manifest.json` that tracks knowledge sources:
|
235
|
-
-
|
236
|
-
-
|
237
|
-
-
|
243
|
+
- Plugin mode: Stored in `agents/<kb-name>/manifest.json` (version controlled)
|
244
|
+
- Non-plugin mode: Stored in `.claude/skills/<kb-name>/manifest.json`
|
245
|
+
- Contains KB type (remote/local), source URLs, Confluence labels
|
238
246
|
- Team members run `aircana kb refresh` to sync remote knowledge locally
|
239
247
|
|
240
248
|
**Plugin-Aware Path Resolution**:
|
@@ -278,6 +286,5 @@ Knowledge bases can sync content from multiple sources:
|
|
278
286
|
- Manifest schema version 1.0
|
279
287
|
- `aircana kb refresh <kb-name>` refreshes all sources (Confluence + web) for remote KBs
|
280
288
|
- `aircana kb refresh-all` refreshes all configured remote knowledge bases
|
281
|
-
-
|
282
|
-
-
|
283
|
-
- Knowledge paths referenced in skill files use tilde notation: `~/.claude/skills/.../`
|
289
|
+
- **Plugin mode**: KB content stored in `skills/<kb-name>/`
|
290
|
+
- **Non-plugin mode**: KB content stored in `.claude/skills/<kb-name>/`
|
@@ -57,10 +57,10 @@ module Aircana
|
|
57
57
|
Aircana.configuration.instance_variable_set(:@plugin_manifest_dir,
|
58
58
|
File.join(target_dir, ".claude-plugin"))
|
59
59
|
Aircana.configuration.instance_variable_set(:@commands_dir, File.join(target_dir, "commands"))
|
60
|
-
Aircana.configuration.instance_variable_set(:@
|
60
|
+
Aircana.configuration.instance_variable_set(:@skills_dir, File.join(target_dir, "skills"))
|
61
|
+
Aircana.configuration.instance_variable_set(:@kb_knowledge_dir, File.join(target_dir, "skills"))
|
61
62
|
Aircana.configuration.instance_variable_set(:@hooks_dir, File.join(target_dir, "hooks"))
|
62
63
|
Aircana.configuration.instance_variable_set(:@scripts_dir, File.join(target_dir, "scripts"))
|
63
|
-
Aircana.configuration.instance_variable_set(:@agent_knowledge_dir, File.join(target_dir, "agents"))
|
64
64
|
|
65
65
|
yield
|
66
66
|
ensure
|
@@ -71,11 +71,17 @@ module Aircana
|
|
71
71
|
File.join(original_plugin_root, ".claude-plugin"))
|
72
72
|
Aircana.configuration.instance_variable_set(:@commands_dir,
|
73
73
|
File.join(original_plugin_root, "commands"))
|
74
|
-
|
74
|
+
# Restore skills_dir based on whether original_plugin_root is a plugin
|
75
|
+
original_plugin_mode = File.exist?(File.join(original_plugin_root, ".claude-plugin", "plugin.json"))
|
76
|
+
original_skills_dir = if original_plugin_mode
|
77
|
+
File.join(original_plugin_root, "skills")
|
78
|
+
else
|
79
|
+
File.join(original_plugin_root, ".claude", "skills")
|
80
|
+
end
|
81
|
+
Aircana.configuration.instance_variable_set(:@skills_dir, original_skills_dir)
|
82
|
+
Aircana.configuration.instance_variable_set(:@kb_knowledge_dir, original_skills_dir)
|
75
83
|
Aircana.configuration.instance_variable_set(:@hooks_dir, File.join(original_plugin_root, "hooks"))
|
76
84
|
Aircana.configuration.instance_variable_set(:@scripts_dir, File.join(original_plugin_root, "scripts"))
|
77
|
-
Aircana.configuration.instance_variable_set(:@agent_knowledge_dir,
|
78
|
-
File.join(original_plugin_root, "agents"))
|
79
85
|
end
|
80
86
|
end
|
81
87
|
|
@@ -109,7 +115,7 @@ module Aircana
|
|
109
115
|
|
110
116
|
def create_plugin_structure(target_dir)
|
111
117
|
# Create plugin directories
|
112
|
-
[".claude-plugin", "commands", "agents", "hooks", "scripts"].each do |dir|
|
118
|
+
[".claude-plugin", "commands", "agents", "skills", "hooks", "scripts"].each do |dir|
|
113
119
|
dir_path = File.join(target_dir, dir)
|
114
120
|
Aircana.create_dir_if_needed(dir_path)
|
115
121
|
Aircana.human_logger.info("Created directory: #{dir}/")
|
@@ -237,7 +243,8 @@ module Aircana
|
|
237
243
|
Aircana.human_logger.info("\nPlugin structure:")
|
238
244
|
Aircana.human_logger.info(" .claude-plugin/plugin.json - Plugin metadata")
|
239
245
|
Aircana.human_logger.info(" commands/ - Slash commands")
|
240
|
-
Aircana.human_logger.info(" agents/ - Knowledge
|
246
|
+
Aircana.human_logger.info(" agents/ - Knowledge base manifests")
|
247
|
+
Aircana.human_logger.info(" skills/ - Knowledge base SKILL.md files")
|
241
248
|
Aircana.human_logger.info(" hooks/ - Event hook configurations")
|
242
249
|
Aircana.human_logger.info(" scripts/ - Hook scripts and utilities")
|
243
250
|
Aircana.human_logger.info("\nNext steps:")
|
@@ -284,11 +284,21 @@ module Aircana
|
|
284
284
|
end
|
285
285
|
|
286
286
|
def remote_knowledge_pattern
|
287
|
-
|
287
|
+
# Pattern depends on whether we're in a plugin
|
288
|
+
if Aircana.configuration.plugin_mode?
|
289
|
+
"skills/*/*.md"
|
290
|
+
else
|
291
|
+
".claude/skills/*/*.md"
|
292
|
+
end
|
288
293
|
end
|
289
294
|
|
290
295
|
def local_knowledge_negation_pattern
|
291
|
-
|
296
|
+
# Negation pattern depends on whether we're in a plugin
|
297
|
+
if Aircana.configuration.plugin_mode?
|
298
|
+
"!skills/*/*.md"
|
299
|
+
else
|
300
|
+
"!.claude/skills/*/*.md"
|
301
|
+
end
|
292
302
|
end
|
293
303
|
|
294
304
|
def gitignore_has_pattern?(gitignore_path, pattern)
|
@@ -69,17 +69,28 @@ module Aircana
|
|
69
69
|
@output_dir = File.join(@global_dir, "aircana.out")
|
70
70
|
end
|
71
71
|
|
72
|
+
# rubocop:disable Metrics/MethodLength
|
72
73
|
def setup_plugin_paths
|
73
74
|
# Plugin root can be set via AIRCANA_PLUGIN_ROOT (for hooks) or CLAUDE_PLUGIN_ROOT,
|
74
75
|
# otherwise defaults to the current project directory
|
75
76
|
@plugin_root = ENV.fetch("AIRCANA_PLUGIN_ROOT", ENV.fetch("CLAUDE_PLUGIN_ROOT", @project_dir))
|
76
77
|
@plugin_manifest_dir = File.join(@plugin_root, ".claude-plugin")
|
77
78
|
@commands_dir = File.join(@plugin_root, "commands")
|
78
|
-
|
79
|
+
|
80
|
+
# Skills directory location depends on whether we're in a plugin
|
81
|
+
# Plugin mode: skills/ (Claude Code standard location)
|
82
|
+
# Non-plugin mode: .claude/skills/ (local development/one-off usage)
|
83
|
+
@skills_dir = if plugin_mode?
|
84
|
+
File.join(@plugin_root, "skills")
|
85
|
+
else
|
86
|
+
File.join(@plugin_root, ".claude", "skills")
|
87
|
+
end
|
88
|
+
|
79
89
|
@hooks_dir = File.join(@plugin_root, "hooks")
|
80
90
|
@scripts_dir = File.join(@plugin_root, "scripts")
|
81
91
|
@kb_knowledge_dir = @skills_dir
|
82
92
|
end
|
93
|
+
# rubocop:enable Metrics/MethodLength
|
83
94
|
|
84
95
|
def setup_claude_code_paths
|
85
96
|
@claude_code_config_path = File.join(Dir.home, ".claude")
|
data/lib/aircana/version.rb
CHANGED