aircana 3.0.0.rc1 → 3.0.0.rc3

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.claude-plugin/plugin.json +7 -0
  3. data/.rspec_status +150 -153
  4. data/.rubocop.yml +12 -0
  5. data/CHANGELOG.md +24 -2
  6. data/CLAUDE.md +50 -19
  7. data/README.md +132 -55
  8. data/agents/apply_feedback.md +92 -0
  9. data/agents/executor.md +85 -0
  10. data/agents/jira.md +46 -0
  11. data/agents/planner.md +64 -0
  12. data/agents/reviewer.md +95 -0
  13. data/agents/sub-agent-coordinator.md +91 -0
  14. data/agents/test-agent/manifest.json +15 -0
  15. data/commands/air-apply-feedback.md +15 -0
  16. data/commands/air-ask-expert.md +42 -0
  17. data/commands/air-execute.md +13 -0
  18. data/commands/air-plan.md +33 -0
  19. data/commands/air-record.md +17 -0
  20. data/commands/air-review.md +12 -0
  21. data/commands/sample-command.md +1 -0
  22. data/hooks/hooks.json +31 -0
  23. data/lib/aircana/cli/app.rb +32 -4
  24. data/lib/aircana/cli/commands/agents.rb +41 -9
  25. data/lib/aircana/cli/commands/doctor_checks.rb +2 -3
  26. data/lib/aircana/cli/commands/hooks.rb +4 -4
  27. data/lib/aircana/cli/commands/init.rb +261 -0
  28. data/lib/aircana/cli/commands/plugin.rb +157 -0
  29. data/lib/aircana/cli/help_formatter.rb +1 -1
  30. data/lib/aircana/configuration.rb +29 -3
  31. data/lib/aircana/generators/agents_generator.rb +3 -2
  32. data/lib/aircana/hooks_manifest.rb +189 -0
  33. data/lib/aircana/plugin_manifest.rb +146 -0
  34. data/lib/aircana/system_checker.rb +0 -1
  35. data/lib/aircana/templates/agents/base_agent.erb +2 -2
  36. data/lib/aircana/templates/hooks/user_prompt_submit.erb +0 -6
  37. data/lib/aircana/version.rb +1 -1
  38. data/spec_target_1760205040_181/agents/test-agent/manifest.json +15 -0
  39. data/spec_target_1760205220_486/agents/test-agent/manifest.json +15 -0
  40. data/spec_target_1760205379_250/agents/test-agent/manifest.json +15 -0
  41. data/spec_target_1760205601_652/agents/test-agent/manifest.json +15 -0
  42. data/spec_target_1760205608_135/agents/test-agent/manifest.json +15 -0
  43. data/spec_target_1760205654_952/agents/test-agent/manifest.json +15 -0
  44. metadata +27 -2
  45. data/lib/aircana/cli/commands/install.rb +0 -169
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 455d8336f32d1e76e458dac4c9a80ada1d4c3ad3a364e99f15410858f55fd98f
4
- data.tar.gz: 77873c8fe686a4290cb19994f0ff013d397ffc54d54477693dad5567bd7435b0
3
+ metadata.gz: b1856482e2cdb70b17ed29f8ebb42c1ec8091b5f57bc5809cdd5cf6b6faaa93d
4
+ data.tar.gz: b496244c5598c5266a2a7a815daea6132a4a37faf269ff2736afacf547d3f821
5
5
  SHA512:
6
- metadata.gz: 247a170b42d9462a75f273c8318e3da69ecf4d56680d006cc80f97cc60984bd6c67f2864b498cb8708ccd5f03e9f0da0711167de3d283b39fca087a7ef44464b
7
- data.tar.gz: 1ae4d79d8954d6ce5caa69b21b558518447ffae232d0a5ccbc57d320af66d64410202fbd3de5f17c9b9dcc13aa442f79e0b94d13b947b54d36fad952158c0d54
6
+ metadata.gz: ce54c8ade79ac94582530ff6f7ebfb26a2ff6a0deee9067f69fa483fcf13e882a0b0c014ff6607d011f44b878d29c236b7e41be7ca36d0dacbe0539c9252b4a0
7
+ data.tar.gz: 5e70187e226e397bd4e3b0bea3331bd39500d0941fa9e5fc590aa835bc9457371c2230aa4197045b9acd7a3ecc930949de98c835bfff2a1c7c57a1b868ab52ee
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "test-plugin",
3
+ "version": "0.1.0",
4
+ "description": "Test plugin",
5
+ "author": "Test Author",
6
+ "license": "MIT"
7
+ }
data/.rspec_status CHANGED
@@ -1,164 +1,161 @@
1
1
  example_id | status | run_time |
2
2
  ----------------------------------------------------------------- | ------ | --------------- |
3
- ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1] | passed | 0.00442 seconds |
4
- ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2] | passed | 0.00053 seconds |
5
- ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3] | passed | 0.00062 seconds |
3
+ ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:1] | passed | 0.00431 seconds |
4
+ ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:2] | passed | 0.00055 seconds |
5
+ ./spec/aircana/cli/commands/agents_spec.rb[1:1:1:3] | passed | 0.00049 seconds |
6
6
  ./spec/aircana/cli/commands/agents_spec.rb[1:1:2:1] | passed | 0.00099 seconds |
7
- ./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1] | passed | 0.00045 seconds |
8
- ./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2] | passed | 0.00055 seconds |
9
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:1] | passed | 0.00061 seconds |
10
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:2] | passed | 0.00057 seconds |
11
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:3:1] | passed | 0.0006 seconds |
12
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:2:1] | passed | 0.00042 seconds |
13
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:3:1] | passed | 0.0005 seconds |
14
- ./spec/aircana/cli/commands/agents_spec.rb[1:2:4:1] | passed | 0.00049 seconds |
15
- ./spec/aircana/cli/commands/agents_spec.rb[1:3:1] | passed | 0.00082 seconds |
16
- ./spec/aircana/cli/commands/agents_spec.rb[1:3:2] | passed | 0.00064 seconds |
17
- ./spec/aircana/cli/commands/agents_spec.rb[1:3:3] | passed | 0.00064 seconds |
18
- ./spec/aircana/cli/commands/agents_spec.rb[1:4:1] | passed | 0.00034 seconds |
19
- ./spec/aircana/cli/commands/agents_spec.rb[1:5:1:1] | passed | 0.00043 seconds |
20
- ./spec/aircana/cli/commands/agents_spec.rb[1:5:2:1] | passed | 0.0005 seconds |
21
- ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:1] | passed | 0.00088 seconds |
22
- ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:2] | passed | 0.00099 seconds |
23
- ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:3] | passed | 0.001 seconds |
24
- ./spec/aircana/cli/commands/hooks_spec.rb[1:1:1:1] | passed | 0.00074 seconds |
25
- ./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:1:1] | passed | 0.0007 seconds |
26
- ./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:2:1] | passed | 0.00077 seconds |
27
- ./spec/aircana/cli/commands/hooks_spec.rb[1:2:1:1] | passed | 0.00053 seconds |
28
- ./spec/aircana/cli/commands/hooks_spec.rb[1:2:2:1] | passed | 0.00064 seconds |
29
- ./spec/aircana/cli/commands/hooks_spec.rb[1:3:1:1] | passed | 0.00048 seconds |
30
- ./spec/aircana/cli/commands/hooks_spec.rb[1:3:2:1] | passed | 0.00088 seconds |
31
- ./spec/aircana/cli/commands/hooks_spec.rb[1:4:1] | passed | 0.00131 seconds |
32
- ./spec/aircana/cli/commands/hooks_spec.rb[1:4:2:1] | passed | 0.00112 seconds |
33
- ./spec/aircana/cli/commands/hooks_spec.rb[1:5:1:1] | passed | 0.0005 seconds |
34
- ./spec/aircana/cli/commands/hooks_spec.rb[1:5:2:1] | passed | 0.00054 seconds |
35
- ./spec/aircana/cli/commands/hooks_spec.rb[1:5:3:1] | passed | 0.00059 seconds |
7
+ ./spec/aircana/cli/commands/agents_spec.rb[1:1:3:1] | passed | 0.00048 seconds |
8
+ ./spec/aircana/cli/commands/agents_spec.rb[1:1:3:2] | passed | 0.00044 seconds |
9
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:1] | passed | 0.00062 seconds |
10
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:2] | passed | 0.00059 seconds |
11
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:1:3:1] | passed | 0.0007 seconds |
12
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:2:1] | passed | 0.00046 seconds |
13
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:3:1] | passed | 0.00047 seconds |
14
+ ./spec/aircana/cli/commands/agents_spec.rb[1:2:4:1] | passed | 0.00051 seconds |
15
+ ./spec/aircana/cli/commands/agents_spec.rb[1:3:1] | passed | 0.00085 seconds |
16
+ ./spec/aircana/cli/commands/agents_spec.rb[1:3:2] | passed | 0.00062 seconds |
17
+ ./spec/aircana/cli/commands/agents_spec.rb[1:3:3] | passed | 0.00066 seconds |
18
+ ./spec/aircana/cli/commands/agents_spec.rb[1:4:1] | passed | 0.00028 seconds |
19
+ ./spec/aircana/cli/commands/agents_spec.rb[1:5:1:1] | passed | 0.0005 seconds |
20
+ ./spec/aircana/cli/commands/agents_spec.rb[1:5:2:1] | passed | 0.00843 seconds |
21
+ ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:1] | passed | 0.00134 seconds |
22
+ ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:2] | passed | 0.00119 seconds |
23
+ ./spec/aircana/cli/commands/agents_spec.rb[1:5:3:3] | passed | 0.00118 seconds |
24
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:1:1:1] | passed | 0.00081 seconds |
25
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:1:1] | passed | 0.00077 seconds |
26
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:1:2:2:1] | passed | 0.00071 seconds |
27
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:2:1:1] | passed | 0.00051 seconds |
28
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:2:2:1] | passed | 0.00066 seconds |
29
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:3:1:1] | passed | 0.00043 seconds |
30
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:3:2:1] | passed | 0.00095 seconds |
31
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:4:1] | passed | 0.00146 seconds |
32
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:4:2:1] | passed | 0.00111 seconds |
33
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:5:1:1] | passed | 0.00046 seconds |
34
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:5:2:1] | passed | 0.00051 seconds |
35
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:5:3:1] | passed | 0.00055 seconds |
36
36
  ./spec/aircana/cli/commands/hooks_spec.rb[1:5:4:1] | passed | 0.00049 seconds |
37
- ./spec/aircana/cli/commands/hooks_spec.rb[1:6:1:1] | passed | 0.00049 seconds |
38
- ./spec/aircana/cli/commands/hooks_spec.rb[1:6:2:1] | passed | 0.00124 seconds |
37
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:6:1:1] | passed | 0.00043 seconds |
38
+ ./spec/aircana/cli/commands/hooks_spec.rb[1:6:2:1] | passed | 0.00121 seconds |
39
39
  ./spec/aircana/cli/commands/hooks_spec.rb[1:7:1] | passed | 0.00043 seconds |
40
- ./spec/aircana/cli/commands/install_spec.rb[1:1:1] | passed | 0.00112 seconds |
41
- ./spec/aircana/cli/commands/install_spec.rb[1:1:2] | passed | 0.00802 seconds |
42
- ./spec/aircana/cli/commands/install_spec.rb[1:2:1:1] | passed | 0.00633 seconds |
43
- ./spec/aircana/cli/commands/install_spec.rb[1:2:2:1] | passed | 0.0034 seconds |
44
- ./spec/aircana/cli/commands/install_spec.rb[1:2:3:1] | passed | 0.00331 seconds |
45
- ./spec/aircana/cli/commands/install_spec.rb[1:2:4:1] | passed | 0.00323 seconds |
46
- ./spec/aircana/cli/commands/install_spec.rb[1:3:1] | passed | 0.00096 seconds |
47
- ./spec/aircana/cli/commands/install_spec.rb[1:3:2:1] | passed | 0.00074 seconds |
48
- ./spec/aircana/cli/commands/install_spec.rb[1:3:3:1] | passed | 0.00101 seconds |
49
- ./spec/aircana/cli/commands/install_spec.rb[1:3:4:1] | passed | 0.00104 seconds |
50
- ./spec/aircana/cli/commands/install_spec.rb[1:4:1] | passed | 0.00049 seconds |
51
- ./spec/aircana/cli/commands/install_spec.rb[1:4:2] | passed | 0.00047 seconds |
52
- ./spec/aircana/cli/commands/install_spec.rb[1:4:3] | passed | 0.00044 seconds |
53
- ./spec/aircana/cli/commands/install_spec.rb[1:4:4] | passed | 0.0006 seconds |
54
- ./spec/aircana/cli/commands/install_spec.rb[1:4:5] | passed | 0.00047 seconds |
55
- ./spec/aircana/cli/commands/install_spec.rb[1:5:1:1] | passed | 0.00052 seconds |
56
- ./spec/aircana/cli/commands/install_spec.rb[1:5:2:1] | passed | 0.00064 seconds |
57
- ./spec/aircana/cli/commands/install_spec.rb[1:5:3:1] | passed | 0.00057 seconds |
58
- ./spec/aircana/cli/commands/install_spec.rb[1:6:1] | passed | 0.00052 seconds |
59
- ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00009 seconds |
40
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.00182 seconds |
41
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00814 seconds |
42
+ ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00347 seconds |
43
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00127 seconds |
44
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.0012 seconds |
45
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00111 seconds |
46
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00124 seconds |
47
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00076 seconds |
48
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00089 seconds |
49
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00077 seconds |
50
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00074 seconds |
51
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00085 seconds |
52
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00166 seconds |
53
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00186 seconds |
54
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00197 seconds |
55
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00759 seconds |
56
+ ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.0001 seconds |
60
57
  ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00005 seconds |
61
58
  ./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00004 seconds |
62
59
  ./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
63
60
  ./spec/aircana/configuration_spec.rb[1:4:2] | passed | 0.00004 seconds |
64
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00188 seconds |
65
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00055 seconds |
66
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00111 seconds |
67
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00023 seconds |
68
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00019 seconds |
69
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00017 seconds |
70
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00039 seconds |
71
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00047 seconds |
72
- ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00032 seconds |
61
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00212 seconds |
62
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00051 seconds |
63
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00124 seconds |
64
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00025 seconds |
65
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00032 seconds |
66
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00016 seconds |
67
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00043 seconds |
68
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00044 seconds |
69
+ ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00035 seconds |
73
70
  ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00019 seconds |
74
- ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00017 seconds |
75
- ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00016 seconds |
71
+ ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00016 seconds |
72
+ ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00015 seconds |
76
73
  ./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00016 seconds |
77
- ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00017 seconds |
74
+ ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00037 seconds |
78
75
  ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00022 seconds |
79
- ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00018 seconds |
76
+ ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00017 seconds |
80
77
  ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00019 seconds |
81
78
  ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00016 seconds |
82
79
  ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00017 seconds |
83
- ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00015 seconds |
84
- ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00019 seconds |
85
- ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00007 seconds |
86
- ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00015 seconds |
80
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00014 seconds |
81
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00015 seconds |
82
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00011 seconds |
83
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00016 seconds |
87
84
  ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00016 seconds |
88
- ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00016 seconds |
89
- ./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00007 seconds |
90
- ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00015 seconds |
85
+ ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00015 seconds |
86
+ ./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00019 seconds |
87
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00014 seconds |
91
88
  ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00007 seconds |
92
89
  ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00008 seconds |
93
- ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00007 seconds |
94
- ./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00594 seconds |
95
- ./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00019 seconds |
96
- ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00009 seconds |
97
- ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00008 seconds |
98
- ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00008 seconds |
99
- ./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00021 seconds |
100
- ./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00015 seconds |
101
- ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00017 seconds |
102
- ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00029 seconds |
103
- ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00026 seconds |
104
- ./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00018 seconds |
105
- ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00014 seconds |
106
- ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00013 seconds |
107
- ./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00024 seconds |
108
- ./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00015 seconds |
109
- ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00024 seconds |
110
- ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00071 seconds |
111
- ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00043 seconds |
112
- ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00022 seconds |
113
- ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00028 seconds |
114
- ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00018 seconds |
115
- ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00017 seconds |
116
- ./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00015 seconds |
117
- ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00058 seconds |
118
- ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00016 seconds |
119
- ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00038 seconds |
120
- ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.0005 seconds |
121
- ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00029 seconds |
122
- ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.0003 seconds |
123
- ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00015 seconds |
124
- ./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00016 seconds |
125
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00026 seconds |
126
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00021 seconds |
127
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00047 seconds |
128
- ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00039 seconds |
129
- ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00028 seconds |
130
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00014 seconds |
131
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00014 seconds |
132
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00015 seconds |
133
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00014 seconds |
90
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00008 seconds |
91
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00007 seconds |
92
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00007 seconds |
93
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00007 seconds |
94
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00007 seconds |
95
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00007 seconds |
96
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00026 seconds |
97
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00016 seconds |
98
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00064 seconds |
99
+ ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.0008 seconds |
100
+ ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00067 seconds |
101
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00061 seconds |
102
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00107 seconds |
103
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00039 seconds |
104
+ ./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00053 seconds |
105
+ ./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00047 seconds |
106
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.0004 seconds |
107
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00135 seconds |
108
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00183 seconds |
109
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00122 seconds |
110
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00116 seconds |
111
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00057 seconds |
112
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00089 seconds |
113
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00061 seconds |
114
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00196 seconds |
115
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00063 seconds |
116
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00202 seconds |
117
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.0007 seconds |
118
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00121 seconds |
119
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00029 seconds |
120
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00016 seconds |
121
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00014 seconds |
122
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00023 seconds |
123
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00064 seconds |
124
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00024 seconds |
125
+ ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00027 seconds |
126
+ ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00032 seconds |
127
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00015 seconds |
128
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00013 seconds |
129
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00013 seconds |
130
+ ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00012 seconds |
134
131
  ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.0001 seconds |
135
132
  ./spec/aircana/generators/agents_generator_spec.rb[1:1:1] | passed | 0.00004 seconds |
136
- ./spec/aircana/generators/agents_generator_spec.rb[1:2:1] | passed | 0.00019 seconds |
137
- ./spec/aircana/generators/agents_generator_spec.rb[1:3:1:1] | passed | 0.00006 seconds |
138
- ./spec/aircana/generators/agents_generator_spec.rb[1:3:1:2] | passed | 0.00006 seconds |
139
- ./spec/aircana/generators/agents_generator_spec.rb[1:4:1:1] | passed | 0.00005 seconds |
133
+ ./spec/aircana/generators/agents_generator_spec.rb[1:2:1] | passed | 0.0002 seconds |
134
+ ./spec/aircana/generators/agents_generator_spec.rb[1:3:1:1] | passed | 0.00007 seconds |
135
+ ./spec/aircana/generators/agents_generator_spec.rb[1:3:1:2] | passed | 0.00005 seconds |
136
+ ./spec/aircana/generators/agents_generator_spec.rb[1:4:1:1] | passed | 0.00006 seconds |
140
137
  ./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00004 seconds |
141
138
  ./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00003 seconds |
142
- ./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00049 seconds |
143
- ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00044 seconds |
144
- ./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00012 seconds |
145
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00012 seconds |
146
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
147
- ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.0006 seconds |
148
- ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00022 seconds |
149
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.0004 seconds |
150
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00047 seconds |
139
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00053 seconds |
140
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00025 seconds |
141
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00011 seconds |
142
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00013 seconds |
143
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00005 seconds |
144
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00071 seconds |
145
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00021 seconds |
146
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00044 seconds |
147
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00046 seconds |
151
148
  ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00032 seconds |
152
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00012 seconds |
149
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00013 seconds |
153
150
  ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00009 seconds |
154
- ./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00026 seconds |
151
+ ./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00025 seconds |
155
152
  ./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00046 seconds |
156
- ./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00013 seconds |
153
+ ./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00012 seconds |
157
154
  ./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00009 seconds |
158
155
  ./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00005 seconds |
159
156
  ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00005 seconds |
160
- ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00005 seconds |
161
- ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00005 seconds |
157
+ ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00014 seconds |
158
+ ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00004 seconds |
162
159
  ./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00004 seconds |
163
160
  ./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00004 seconds |
164
161
  ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00004 seconds |
@@ -167,25 +164,25 @@ example_id | status | run
167
164
  ./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00004 seconds |
168
165
  ./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00004 seconds |
169
166
  ./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00053 seconds |
170
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00055 seconds |
171
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00041 seconds |
167
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00044 seconds |
168
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0004 seconds |
172
169
  ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00041 seconds |
173
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00047 seconds |
174
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00041 seconds |
175
- ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00045 seconds |
176
- ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.0004 seconds |
177
- ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.0004 seconds |
178
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00028 seconds |
179
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00026 seconds |
180
- ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00039 seconds |
181
- ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00056 seconds |
182
- ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00082 seconds |
183
- ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00028 seconds |
184
- ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.0003 seconds |
170
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.0005 seconds |
171
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00042 seconds |
172
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00047 seconds |
173
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00044 seconds |
174
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00042 seconds |
175
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00029 seconds |
176
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00254 seconds |
177
+ ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.0004 seconds |
178
+ ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.0009 seconds |
179
+ ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00102 seconds |
180
+ ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00027 seconds |
181
+ ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00032 seconds |
185
182
  ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00024 seconds |
186
- ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00026 seconds |
187
- ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.0003 seconds |
188
- ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00038 seconds |
189
- ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00415 seconds |
190
- ./spec/aircana_spec.rb[1:1] | passed | 0.00005 seconds |
191
- ./spec/aircana_spec.rb[1:2] | passed | 0.00066 seconds |
183
+ ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00041 seconds |
184
+ ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00031 seconds |
185
+ ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00034 seconds |
186
+ ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.0002 seconds |
187
+ ./spec/aircana_spec.rb[1:1] | passed | 0.00004 seconds |
188
+ ./spec/aircana_spec.rb[1:2] | passed | 0.00067 seconds |
data/.rubocop.yml CHANGED
@@ -29,9 +29,11 @@ Metrics/ClassLength:
29
29
  - 'lib/aircana/cli/commands/add_directory.rb'
30
30
  - 'lib/aircana/cli/commands/hooks.rb'
31
31
  - 'lib/aircana/cli/commands/install.rb'
32
+ - 'lib/aircana/cli/commands/plugin.rb'
32
33
  - 'lib/aircana/contexts/confluence.rb'
33
34
  - 'lib/aircana/contexts/manifest.rb'
34
35
  - 'lib/aircana/symlink_manager.rb'
36
+ - 'lib/aircana/hooks_manifest.rb'
35
37
 
36
38
  Metrics/ModuleLength:
37
39
  Exclude:
@@ -44,24 +46,34 @@ Metrics/MethodLength:
44
46
  - 'lib/aircana/cli/commands/hooks.rb'
45
47
  - 'lib/aircana/cli/commands/install.rb'
46
48
  - 'lib/aircana/cli/commands/project.rb'
49
+ - 'lib/aircana/cli/commands/init.rb'
47
50
  - 'lib/aircana/generators/project_config_generator.rb'
48
51
  - 'lib/aircana/symlink_manager.rb'
49
52
  - 'lib/aircana/contexts/confluence.rb'
50
53
  - 'lib/aircana/contexts/manifest.rb'
54
+ - 'lib/aircana/hooks_manifest.rb'
55
+ - 'lib/aircana/plugin_manifest.rb'
51
56
 
52
57
  Metrics/AbcSize:
53
58
  Exclude:
54
59
  - 'lib/aircana/cli/commands/hooks.rb'
55
60
  - 'lib/aircana/cli/commands/install.rb'
56
61
  - 'lib/aircana/cli/commands/project.rb'
62
+ - 'lib/aircana/cli/commands/init.rb'
57
63
  - 'lib/aircana/symlink_manager.rb'
64
+ - 'lib/aircana/plugin_manifest.rb'
58
65
 
59
66
  Metrics/CyclomaticComplexity:
60
67
  Exclude:
61
68
  - 'lib/aircana/cli/commands/hooks.rb'
62
69
  - 'lib/aircana/cli/commands/project.rb'
70
+ - 'lib/aircana/cli/commands/plugin.rb'
63
71
 
64
72
  Metrics/PerceivedComplexity:
65
73
  Exclude:
66
74
  - 'lib/aircana/cli/commands/hooks.rb'
67
75
  - 'lib/aircana/cli/commands/project.rb'
76
+ - 'lib/aircana/cli/commands/plugin.rb'
77
+
78
+ Naming/PredicateMethod:
79
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -7,21 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+ - Directory parameter support for `init` command
12
+ - Can now specify target directory: `aircana init /path/to/project`
13
+ - Automatically creates directory if it doesn't exist
14
+ - Defaults to current directory when no path specified
15
+
10
16
  ### Changed
17
+ - **BREAKING**: Renamed `aircana install` command to `aircana init`
18
+ - More intuitive naming aligned with standard CLI conventions
19
+ - All documentation and help text updated
11
20
  - **BREAKING**: Agent knowledge bases and manifests moved from `.aircana/agents/` to `.claude/agents/`
12
21
  - Agent files and their knowledge are now co-located in the `.claude/agents/` directory
13
22
  - This consolidates all Claude Code artifacts in one location
23
+ - **BREAKING**: Hook scripts moved from `.aircana/hooks/` to `.claude/hooks/`
24
+ - All Claude Code project artifacts now consolidated in `.claude/` directory
25
+ - Global Aircana configuration remains in `~/.aircana`
26
+
27
+ ### Removed
28
+ - Removed `relevant_files` feature from user_prompt_submit hook template
29
+ - Feature was not widely used and added unnecessary complexity
14
30
 
15
31
  ### Migration Guide
16
32
  To upgrade from a previous version:
17
- 1. Move existing agent knowledge manually:
33
+ 1. Update any scripts or documentation that reference `aircana install` to use `aircana init` instead
34
+ 2. Move existing agent knowledge and hooks manually:
18
35
  ```bash
36
+ # Move agent knowledge
19
37
  mv .aircana/agents/*/* .claude/agents/
38
+ # Move hooks
39
+ mv .aircana/hooks/* .claude/hooks/
20
40
  ```
21
- 2. Or refresh all agent knowledge from sources:
41
+ 3. Or refresh all agent knowledge from sources and regenerate hooks:
22
42
  ```bash
23
43
  aircana agents refresh-all
44
+ aircana init
24
45
  ```
46
+ 4. Remove the old `.aircana` directory if no longer needed (keeping `~/.aircana` for global config)
25
47
 
26
48
  ## [1.5.0] - 2025-09-28
27
49
 
data/CLAUDE.md CHANGED
@@ -25,57 +25,88 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
25
25
  - `bundle exec rake release` - Release new version (updates version, creates git tag, pushes to rubygems)
26
26
 
27
27
  ### Aircana CLI Commands
28
- - `aircana doctor` - Check system health and dependencies
29
- - `aircana doctor --verbose` - Show detailed dependency information
30
- - `aircana dump-context <agent_name>` - Dump context for specified agent
31
- - `aircana generate` - Generate all configured files
32
- - `aircana install` - Install generated files to Claude Code config
28
+
29
+ **Plugin Management:**
30
+ - `aircana init [DIRECTORY]` - Initialize a Claude Code plugin in specified directory (defaults to current)
31
+ - `aircana init --plugin-name NAME` - Initialize with custom plugin name
32
+ - `aircana plugin info` - Display plugin information
33
+ - `aircana plugin update` - Update plugin metadata interactively
34
+ - `aircana plugin version` - Show current version
35
+ - `aircana plugin version bump [major|minor|patch]` - Bump semantic version
36
+ - `aircana plugin version set` - Set specific version
37
+ - `aircana plugin validate` - Validate plugin structure and manifests
38
+
39
+ **Agent Management:**
33
40
  - `aircana agents create` - Create a new agent interactively
41
+ - `aircana agents list` - List all configured agents
34
42
  - `aircana agents refresh <agent>` - Refresh agent knowledge from Confluence and web sources
35
43
  - `aircana agents refresh-all` - Refresh knowledge for all configured agents
36
44
  - `aircana agents add-url <agent> <url>` - Add a web URL to an agent's knowledge base
45
+
46
+ **Hook Management:**
37
47
  - `aircana hooks list` - List all available hooks
38
48
  - `aircana hooks enable <hook>` - Enable a specific hook
39
49
  - `aircana hooks disable <hook>` - Disable a specific hook
40
50
  - `aircana hooks create` - Create custom hook
41
51
  - `aircana hooks status` - Show hook configuration status
42
52
 
53
+ **System:**
54
+ - `aircana doctor` - Check system health and dependencies
55
+ - `aircana doctor --verbose` - Show detailed dependency information
56
+ - `aircana generate` - Generate plugin components from templates
57
+ - `aircana dump-context <agent_name>` - Dump context for specified agent
58
+
43
59
  ## Architecture
44
60
 
45
61
  ### Core Structure
46
- Aircana is a Ruby gem that provides context management and workflow utilities for AI agents, specifically Claude Code. The main components:
62
+ Aircana is a Ruby gem that creates and manages Claude Code plugins. The main components:
47
63
 
48
64
  - **CLI Layer** (`lib/aircana/cli/`): Thor-based command line interface with subcommands
49
65
  - `app.rb`: Main Thor application defining all commands
50
66
  - `subcommand.rb`: Base class for subcommands
51
67
  - `shell_command.rb`: Shell command execution utilities
52
68
  - `commands/`: Individual command implementations
53
- - **Contexts** (`lib/aircana/contexts/`): Manages different types of context
69
+ - `init.rb`: Plugin initialization
70
+ - `plugin.rb`: Plugin metadata management
71
+ - `agents.rb`: Agent CRUD operations
72
+ - `hooks.rb`: Hook management
73
+ - **Plugin Management**:
74
+ - `plugin_manifest.rb`: Manages `.claude-plugin/plugin.json`
75
+ - `hooks_manifest.rb`: Manages `hooks/hooks.json`
76
+ - **Contexts** (`lib/aircana/contexts/`): Manages knowledge sources
54
77
  - `confluence.rb`: Handles Confluence page fetching and caching
55
78
  - `confluence_content.rb`: Processes Confluence content
56
79
  - `web.rb`: Handles web URL fetching and HTML to Markdown conversion
57
- - `local.rb`: Local file context management
80
+ - `manifest.rb`: Tracks knowledge sources per agent
58
81
  - **Generators** (`lib/aircana/generators/`): Template generation system
59
82
  - `base_generator.rb`: Base class for all generators
60
83
  - `agents_generator.rb`: Generates agent configurations
61
- - `hooks_generator.rb`: Generates hook configurations
62
- - **Configuration** (`lib/aircana/configuration.rb`): Centralized configuration management
84
+ - Command generators: Generate slash commands from templates
85
+ - **Configuration** (`lib/aircana/configuration.rb`): Centralized configuration management with plugin-aware paths
63
86
  - **Support Classes**:
64
87
  - `human_logger.rb`: User-friendly logging output
65
88
  - `system_checker.rb`: Dependency validation
66
- - `agent.rb`: Agent model and persistence
67
89
 
68
90
  ### Key Concepts
69
- - **Agents**: Knowledge encapsulation with domain expertise, Confluence sync, and model customization
70
- - **Hooks**: Claude Code integration points for automated workflows
71
- - **Context Management**: Integration with Claude Code through generated templates and configurations
91
+ - **Plugins**: Distributable Claude Code extensions with manifests, agents, commands, and hooks
92
+ - **Plugin Manifests**: JSON files defining plugin metadata (`.claude-plugin/plugin.json`)
93
+ - **Agents**: Domain-specific experts with dedicated knowledge bases and context windows
94
+ - **Knowledge Bases**: Curated documentation from Confluence and web sources
95
+ - **Hooks**: Event-driven automation through `hooks/hooks.json`
96
+ - **Commands**: Custom slash commands for workflow automation
72
97
 
73
98
  ### File Organization
74
- - Configuration files stored in `~/.aircana` (global) and `.aircana/` (project-local)
75
- - Claude Code integration through `~/.claude` and `./.claude` directories
76
- - Generated output goes to `~/.aircana/aircana.out` by default
77
- - Agent knowledge cached in `.claude/agents/<agent_name>/`
78
- - Hooks stored in `.aircana/hooks/`
99
+ - **Plugin Structure**:
100
+ - `.claude-plugin/plugin.json` - Plugin manifest with metadata and versioning
101
+ - `agents/` - Agent markdown files and their knowledge directories
102
+ - `commands/` - Slash command markdown files
103
+ - `hooks/` - Hook scripts and hooks.json manifest
104
+ - **Configuration**:
105
+ - `~/.aircana` - Global Aircana configuration
106
+ - `~/.aircana/aircana.out` - Generated templates output directory
107
+ - **Agent Knowledge**:
108
+ - `agents/<agent_name>/knowledge/` - Cached knowledge base content
109
+ - `agents/<agent_name>/manifest.json` - Tracks knowledge sources
79
110
 
80
111
  ### Dependencies
81
112
  - Thor (~> 0.19.1) for CLI framework