aircana 4.0.0.rc3 → 4.0.0.rc5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b2fec86c0c227e148b87d3e5d766fc779e3e34a6c73f3ebec1f88e427c206bc
4
- data.tar.gz: 3aaa80f749a685e2731b3b7d8ae2c799f2d1a90f58ac017b81784b6393663b87
3
+ metadata.gz: b76d8d7f4a2ba1848e3eb413dff18b86fbd4010d3c8687a9ea1b28f26440b6f2
4
+ data.tar.gz: 123c326d352a7fcc5bc45f440633477ac01ac5a12c0d0d33dd42bfd589290e7a
5
5
  SHA512:
6
- metadata.gz: 8f36f796567c9fdea27472ef87a983e19c0a431afa6567fa05480456cd2417d35a8d63a2ec64735a0c070682c6b5851f9a24d099a02556adb4221d06f50ce6be
7
- data.tar.gz: 0416c54bac24f71275e9c34c5f83711b1312f7abf47b6df1bcef62213d9813b3708761c67e8cbece574051c26a8ff418b9f686ceb50bff85e9951959c35ff201
6
+ metadata.gz: b90dc3e9d898eb4819fdb057f8f33a2934e261d4507915682f8aeabd60d9b0c7db029f8e865b0a085e46597c86866d4e5defc48ccb54161f2c06ea7d1a56974b
7
+ data.tar.gz: b4970c020cbaa9d0af571f5d49d55193d5cf2d10e5e6fa9ae79fe7595d3f467aad37b23ea75180281ff9159cf57d1ad0ad8ba7723366d9b99f2b756b76224b0a
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.01432 seconds |
4
- ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00218 seconds |
5
- ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00396 seconds |
6
- ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00157 seconds |
7
- ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00122 seconds |
8
- ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00126 seconds |
9
- ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00131 seconds |
10
- ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00109 seconds |
11
- ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00103 seconds |
12
- ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.0009 seconds |
13
- ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00094 seconds |
14
- ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00094 seconds |
15
- ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00178 seconds |
16
- ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00212 seconds |
17
- ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00235 seconds |
18
- ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00195 seconds |
19
- ./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00026 seconds |
20
- ./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00047 seconds |
21
- ./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00029 seconds |
22
- ./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00077 seconds |
23
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00083 seconds |
24
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00063 seconds |
25
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00019 seconds |
26
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00077 seconds |
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.00725 seconds |
29
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00012 seconds |
30
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00096 seconds |
31
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00021 seconds |
32
- ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.0001 seconds |
33
- ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00005 seconds |
34
- ./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00004 seconds |
35
- ./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
36
- ./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00004 seconds |
37
- ./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00004 seconds |
38
- ./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00067 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.00017 seconds |
41
- ./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.00016 seconds |
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.00389 seconds |
44
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00077 seconds |
45
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00171 seconds |
46
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00034 seconds |
47
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00026 seconds |
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.00051 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.0003 seconds |
52
- ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00016 seconds |
53
- ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00012 seconds |
54
- ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00011 seconds |
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.00012 seconds |
57
- ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00015 seconds |
58
- ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00013 seconds |
59
- ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00022 seconds |
60
- ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00017 seconds |
61
- ./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.00015 seconds |
62
- ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00017 seconds |
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.00016 seconds |
65
- ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00019 seconds |
66
- ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00021 seconds |
67
- ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00017 seconds |
68
- ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00016 seconds |
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.00014 seconds |
71
- ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00007 seconds |
72
- ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00009 seconds |
73
- ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00008 seconds |
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.00007 seconds |
76
- ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00007 seconds |
77
- ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00007 seconds |
78
- ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00007 seconds |
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.00007 seconds |
81
- ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00007 seconds |
82
- ./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00015 seconds |
83
- ./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00014 seconds |
84
- ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00021 seconds |
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.00017 seconds |
87
- ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00014 seconds |
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.0002 seconds |
90
- ./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00015 seconds |
91
- ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00021 seconds |
92
- ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00042 seconds |
93
- ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00031 seconds |
94
- ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00022 seconds |
95
- ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00028 seconds |
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.00016 seconds |
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.00055 seconds |
100
- ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00016 seconds |
101
- ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00037 seconds |
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.00029 seconds |
104
- ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00028 seconds |
105
- ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00015 seconds |
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.00022 seconds |
108
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.0002 seconds |
109
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00024 seconds |
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.00029 seconds |
112
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00015 seconds |
113
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00014 seconds |
114
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00013 seconds |
115
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00012 seconds |
116
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.0001 seconds |
117
- ./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00004 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.00048 seconds |
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.00016 seconds |
122
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00012 seconds |
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.0006 seconds |
125
- ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.0002 seconds |
126
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00038 seconds |
127
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00033 seconds |
128
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00032 seconds |
129
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00013 seconds |
130
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00009 seconds |
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.00043 seconds |
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.00013 seconds |
135
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00008 seconds |
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.0002 seconds |
138
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00023 seconds |
139
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00018 seconds |
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.0001 seconds |
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.00007 seconds |
144
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00009 seconds |
145
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00007 seconds |
146
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00006 seconds |
3
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.02241 seconds |
4
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.003 seconds |
5
+ ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00417 seconds |
6
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00203 seconds |
7
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00161 seconds |
8
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00165 seconds |
9
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00182 seconds |
10
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00142 seconds |
11
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00143 seconds |
12
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00134 seconds |
13
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00126 seconds |
14
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00132 seconds |
15
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00265 seconds |
16
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00302 seconds |
17
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00335 seconds |
18
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00274 seconds |
19
+ ./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00042 seconds |
20
+ ./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00071 seconds |
21
+ ./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00037 seconds |
22
+ ./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00112 seconds |
23
+ ./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00114 seconds |
24
+ ./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.01254 seconds |
25
+ ./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00027 seconds |
26
+ ./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00191 seconds |
27
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00019 seconds |
28
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.00009 seconds |
29
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00009 seconds |
30
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00123 seconds |
31
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00024 seconds |
32
+ ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00013 seconds |
33
+ ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00077 seconds |
34
+ ./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00006 seconds |
35
+ ./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00006 seconds |
36
+ ./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00005 seconds |
37
+ ./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00006 seconds |
38
+ ./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00005 seconds |
39
+ ./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.0003 seconds |
40
+ ./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.00022 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.00039 seconds |
43
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00467 seconds |
44
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.001 seconds |
45
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00199 seconds |
46
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00071 seconds |
47
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00038 seconds |
48
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00038 seconds |
49
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00084 seconds |
50
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00079 seconds |
51
+ ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00033 seconds |
52
+ ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00019 seconds |
53
+ ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00032 seconds |
54
+ ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00018 seconds |
55
+ ./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00016 seconds |
56
+ ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00016 seconds |
57
+ ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00023 seconds |
58
+ ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00023 seconds |
59
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00031 seconds |
60
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00023 seconds |
61
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.0002 seconds |
62
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00024 seconds |
63
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00025 seconds |
64
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00022 seconds |
65
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00009 seconds |
66
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00023 seconds |
67
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.0002 seconds |
68
+ ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00039 seconds |
69
+ ./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.0001 seconds |
70
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.0002 seconds |
71
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.0001 seconds |
72
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00011 seconds |
73
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.0001 seconds |
74
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.0001 seconds |
75
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.0001 seconds |
76
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00011 seconds |
77
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.0001 seconds |
78
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00009 seconds |
79
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.0001 seconds |
80
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00009 seconds |
81
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00009 seconds |
82
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.0002 seconds |
83
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.0002 seconds |
84
+ ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00028 seconds |
85
+ ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00049 seconds |
86
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00021 seconds |
87
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00019 seconds |
88
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00018 seconds |
89
+ ./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.0003 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.00029 seconds |
92
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00044 seconds |
93
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00054 seconds |
94
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.0003 seconds |
95
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00038 seconds |
96
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00022 seconds |
97
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00021 seconds |
98
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.0002 seconds |
99
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00083 seconds |
100
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.0002 seconds |
101
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.0005 seconds |
102
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.0004 seconds |
103
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00038 seconds |
104
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00037 seconds |
105
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.0002 seconds |
106
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00018 seconds |
107
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00031 seconds |
108
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00026 seconds |
109
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00031 seconds |
110
+ ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00039 seconds |
111
+ ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00037 seconds |
112
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.0002 seconds |
113
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00019 seconds |
114
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00018 seconds |
115
+ ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00017 seconds |
116
+ ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00013 seconds |
117
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00007 seconds |
118
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00005 seconds |
119
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00066 seconds |
120
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00033 seconds |
121
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00017 seconds |
122
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00016 seconds |
123
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00006 seconds |
124
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00085 seconds |
125
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00032 seconds |
126
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00054 seconds |
127
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.0005 seconds |
128
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00046 seconds |
129
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00018 seconds |
130
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00013 seconds |
131
+ ./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00039 seconds |
132
+ ./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00719 seconds |
133
+ ./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00026 seconds |
134
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00021 seconds |
135
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00012 seconds |
136
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.00009 seconds |
137
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00028 seconds |
138
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00028 seconds |
139
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00026 seconds |
140
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00011 seconds |
141
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.0009 seconds |
142
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00012 seconds |
143
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00008 seconds |
144
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00012 seconds |
145
+ ./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00009 seconds |
146
+ ./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00008 seconds |
147
147
  ./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00007 seconds |
148
- ./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00007 seconds |
149
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00009 seconds |
150
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00008 seconds |
151
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00011 seconds |
152
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00008 seconds |
153
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00007 seconds |
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.00007 seconds |
156
- ./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00038 seconds |
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.00526 seconds |
148
+ ./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00008 seconds |
149
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.0001 seconds |
150
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00009 seconds |
151
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00009 seconds |
152
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00009 seconds |
153
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00009 seconds |
154
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00009 seconds |
155
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00008 seconds |
156
+ ./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00118 seconds |
157
+ ./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00043 seconds |
158
+ ./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00012 seconds |
159
159
  ./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00007 seconds |
160
- ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00006 seconds |
161
- ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00005 seconds |
162
- ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00004 seconds |
163
- ./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00004 seconds |
164
- ./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00004 seconds |
165
- ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00004 seconds |
166
- ./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00004 seconds |
160
+ ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00007 seconds |
161
+ ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00006 seconds |
162
+ ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00005 seconds |
163
+ ./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00005 seconds |
164
+ ./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00005 seconds |
165
+ ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00005 seconds |
166
+ ./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00005 seconds |
167
167
  ./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00004 seconds |
168
- ./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00004 seconds |
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.00131 seconds |
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.00039 seconds |
173
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00083 seconds |
174
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00054 seconds |
175
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00076 seconds |
176
- ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00045 seconds |
177
- ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00041 seconds |
178
- ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00057 seconds |
179
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00028 seconds |
180
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00025 seconds |
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.00068 seconds |
183
- ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00088 seconds |
184
- ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00044 seconds |
185
- ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00027 seconds |
186
- ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00025 seconds |
187
- ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00026 seconds |
188
- ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00031 seconds |
189
- ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00034 seconds |
190
- ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00034 seconds |
191
- ./spec/aircana_spec.rb[1:1] | passed | 0.00004 seconds |
192
- ./spec/aircana_spec.rb[1:2] | passed | 0.00064 seconds |
168
+ ./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00005 seconds |
169
+ ./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00005 seconds |
170
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00086 seconds |
171
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00064 seconds |
172
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00084 seconds |
173
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00058 seconds |
174
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00068 seconds |
175
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00055 seconds |
176
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.0009 seconds |
177
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00057 seconds |
178
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00054 seconds |
179
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00038 seconds |
180
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00034 seconds |
181
+ ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00056 seconds |
182
+ ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00074 seconds |
183
+ ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00133 seconds |
184
+ ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00038 seconds |
185
+ ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00035 seconds |
186
+ ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00055 seconds |
187
+ ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00036 seconds |
188
+ ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00039 seconds |
189
+ ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00046 seconds |
190
+ ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00029 seconds |
191
+ ./spec/aircana_spec.rb[1:1] | passed | 0.00005 seconds |
192
+ ./spec/aircana_spec.rb[1:2] | passed | 0.00091 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
- - Global vs plugin-local knowledge storage
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 markdown files (skill definitions)
132
+ - `agents/` - Knowledge base manifests (metadata about knowledge sources)
132
133
  - `agents/<kb-name>/manifest.json` - Tracks knowledge sources per KB
133
- - `agents/<kb-name>/knowledge/` - Local knowledge base content (if KB type is "local")
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
- - **Remote KBs (not version controlled)**: `~/.claude/skills/<kb-name>/`
145
- - Actual knowledge base content (Markdown files)
146
- - Refreshed via `aircana kb refresh`
147
- - Excluded from version control to avoid bloat/sensitivity
148
- - **Local KBs (version controlled)**: `agents/<kb-name>/knowledge/`
149
- - Version-controlled knowledge content in plugin repository
150
- - Auto-synced to `~/.claude/skills/<kb-name>/` via SessionStart hook
151
- - Teams can collaborate on knowledge directly in Git
152
- - **Plugin-local manifests (version controlled)**: `agents/<kb-name>/manifest.json`
153
- - Tracks knowledge sources (Confluence labels, web URLs)
154
- - Specifies KB type ("local" or "remote")
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
- - Version controlled: `agents/<kb-name>/manifest.json` (sources metadata, KB type)
236
- - Remote KBs: Content stored in `~/.claude/skills/<kb-name>/` (not version controlled)
237
- - Local KBs: Content stored in `agents/<kb-name>/knowledge/` (version controlled), synced to `~/.claude/skills/`
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
- - Remote KB content stored as Markdown in `~/.claude/skills/<kb-name>/`
282
- - Local KB content stored in `agents/<kb-name>/knowledge/`, synced to `~/.claude/skills/<kb-name>/`
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(:@agents_dir, File.join(target_dir, "agents"))
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
- Aircana.configuration.instance_variable_set(:@agents_dir, File.join(original_plugin_root, "agents"))
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 bases")
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:")
@@ -221,25 +221,17 @@ module Aircana
221
221
  end
222
222
  # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
223
223
 
224
- # rubocop:disable Metrics/MethodLength
225
- def regenerate_skill_md(kb_name, short_description = nil)
224
+ def regenerate_skill_md(kb_name, _short_description = nil)
226
225
  return unless Aircana::Contexts::Manifest.manifest_exists?(kb_name)
227
226
 
228
- generator = if short_description
229
- Generators::SkillsGenerator.new(
230
- kb_name: kb_name,
231
- short_description: short_description
232
- )
233
- else
234
- Generators::SkillsGenerator.from_manifest(kb_name)
235
- end
227
+ # Always use from_manifest when manifest exists to ensure knowledge_files are loaded
228
+ generator = Generators::SkillsGenerator.from_manifest(kb_name)
236
229
 
237
230
  generator.generate
238
231
  Aircana.human_logger.success "Generated SKILL.md for '#{kb_name}'"
239
232
  rescue StandardError => e
240
233
  Aircana.human_logger.warn "Failed to generate SKILL.md: #{e.message}"
241
234
  end
242
- # rubocop:enable Metrics/MethodLength
243
235
 
244
236
  def ensure_gitignore_entry(kb_type)
245
237
  gitignore_path = gitignore_file_path
@@ -284,11 +276,21 @@ module Aircana
284
276
  end
285
277
 
286
278
  def remote_knowledge_pattern
287
- ".claude/skills/*/*.md"
279
+ # Pattern depends on whether we're in a plugin
280
+ if Aircana.configuration.plugin_mode?
281
+ "skills/*/*.md"
282
+ else
283
+ ".claude/skills/*/*.md"
284
+ end
288
285
  end
289
286
 
290
287
  def local_knowledge_negation_pattern
291
- "!.claude/skills/*/*.md"
288
+ # Negation pattern depends on whether we're in a plugin
289
+ if Aircana.configuration.plugin_mode?
290
+ "!skills/*/*.md"
291
+ else
292
+ "!.claude/skills/*/*.md"
293
+ end
292
294
  end
293
295
 
294
296
  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
- @skills_dir = File.join(@plugin_root, ".claude", "skills")
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")
@@ -101,10 +101,12 @@ module Aircana
101
101
  def extract_page_metadata(page)
102
102
  content = page&.dig("body", "storage", "value") || ""
103
103
  markdown_content = convert_to_markdown(content)
104
- summary = generate_summary(markdown_content, page["title"] || "Confluence page")
104
+ title = page["title"] || "Confluence page"
105
+ summary = generate_summary(markdown_content, title)
105
106
 
106
107
  {
107
108
  "id" => page["id"],
109
+ "title" => title,
108
110
  "summary" => summary
109
111
  }
110
112
  end
@@ -154,6 +154,8 @@ module Aircana
154
154
  raise ManifestError, "Page entry missing required field: id" unless page_entry.key?("id")
155
155
 
156
156
  raise ManifestError, "Page entry missing required field: summary" unless page_entry.key?("summary")
157
+
158
+ # Title is optional for backward compatibility with existing manifests
157
159
  end
158
160
 
159
161
  def validate_web_source(source)
@@ -120,7 +120,14 @@ module Aircana
120
120
  case source["type"]
121
121
  when "confluence"
122
122
  source["pages"]&.each do |page|
123
+ # Match by page ID (for old manifests) or by sanitized title (for new manifests)
123
124
  return page["summary"] if filename.include?(page["id"])
125
+
126
+ # Try matching by sanitized title if available
127
+ if page["title"]
128
+ sanitized_title = sanitize_filename(page["title"])
129
+ return page["summary"] if filename.include?(sanitized_title)
130
+ end
124
131
  end
125
132
  when "web"
126
133
  source["urls"]&.each do |url_entry|
@@ -135,6 +142,20 @@ module Aircana
135
142
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
136
143
  # rubocop:enable Metrics/PerceivedComplexity
137
144
 
145
+ def self.sanitize_filename(title)
146
+ # Match the sanitization logic in Local#sanitize_filename
147
+ sanitized = title.strip
148
+ .gsub(%r{[<>:"/\\|?*]}, "-")
149
+ .gsub(/\s+/, "-")
150
+ .gsub(/-+/, "-")
151
+ .gsub(/^-|-$/, "")
152
+
153
+ sanitized = "untitled" if sanitized.empty?
154
+ sanitized = sanitized[0, 200] if sanitized.length > 200
155
+
156
+ sanitized
157
+ end
158
+
138
159
  def self.generate_skill_description_from_manifest(manifest, kb_name)
139
160
  # Generate a description optimized for Claude's skill discovery
140
161
  source_count = manifest["sources"]&.size || 0
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aircana
4
- VERSION = "4.0.0.rc3"
4
+ VERSION = "4.0.0.rc5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aircana
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc3
4
+ version: 4.0.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Weston Dransfield