openclacky 0.6.4 → 0.7.1

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/.clacky/skills/commit/SKILL.md +297 -0
  3. data/.clacky/skills/gem-release/SKILL.md +253 -0
  4. data/.clacky/skills/test-skill/SKILL.md +15 -0
  5. data/.clackyrules +3 -1
  6. data/CHANGELOG.md +71 -2
  7. data/docs/HOW-TO-USE-CN.md +96 -0
  8. data/docs/HOW-TO-USE.md +94 -0
  9. data/docs/config.example.yml +27 -0
  10. data/docs/deploy_subagent_design.md +540 -0
  11. data/docs/time_machine_design.md +247 -0
  12. data/docs/why-developer.md +371 -0
  13. data/docs/why-openclacky.md +0 -1
  14. data/lib/clacky/agent/cost_tracker.rb +180 -0
  15. data/lib/clacky/agent/llm_caller.rb +54 -0
  16. data/lib/clacky/agent/message_compressor.rb +119 -0
  17. data/lib/clacky/agent/message_compressor_helper.rb +534 -0
  18. data/lib/clacky/agent/session_serializer.rb +152 -0
  19. data/lib/clacky/agent/skill_manager.rb +138 -0
  20. data/lib/clacky/agent/system_prompt_builder.rb +96 -0
  21. data/lib/clacky/agent/time_machine.rb +199 -0
  22. data/lib/clacky/agent/tool_executor.rb +434 -0
  23. data/lib/clacky/{tool_registry.rb → agent/tool_registry.rb} +1 -1
  24. data/lib/clacky/agent.rb +315 -1303
  25. data/lib/clacky/agent_config.rb +447 -10
  26. data/lib/clacky/cli.rb +291 -570
  27. data/lib/clacky/client.rb +107 -52
  28. data/lib/clacky/default_skills/code-explorer/SKILL.md +41 -0
  29. data/lib/clacky/default_skills/deploy/SKILL.md +13 -0
  30. data/lib/clacky/default_skills/deploy/scripts/rails_deploy.rb +383 -0
  31. data/lib/clacky/default_skills/deploy/tools/check_health.rb +116 -0
  32. data/lib/clacky/default_skills/deploy/tools/execute_deployment.rb +174 -0
  33. data/lib/clacky/default_skills/deploy/tools/fetch_runtime_logs.rb +67 -0
  34. data/lib/clacky/default_skills/deploy/tools/list_services.rb +80 -0
  35. data/lib/clacky/default_skills/deploy/tools/report_deploy_status.rb +67 -0
  36. data/lib/clacky/default_skills/deploy/tools/set_deploy_variables.rb +138 -0
  37. data/lib/clacky/default_skills/new/SKILL.md +55 -0
  38. data/lib/clacky/json_ui_controller.rb +195 -0
  39. data/lib/clacky/skill.rb +48 -7
  40. data/lib/clacky/skill_loader.rb +7 -0
  41. data/lib/clacky/tools/edit.rb +105 -48
  42. data/lib/clacky/tools/file_reader.rb +57 -83
  43. data/lib/clacky/tools/glob.rb +1 -1
  44. data/lib/clacky/tools/grep.rb +1 -1
  45. data/lib/clacky/tools/invoke_skill.rb +89 -0
  46. data/lib/clacky/tools/list_tasks.rb +54 -0
  47. data/lib/clacky/tools/redo_task.rb +41 -0
  48. data/lib/clacky/tools/request_user_feedback.rb +84 -0
  49. data/lib/clacky/tools/safe_shell.rb +1 -1
  50. data/lib/clacky/tools/shell.rb +74 -62
  51. data/lib/clacky/tools/trash_manager.rb +1 -1
  52. data/lib/clacky/tools/undo_task.rb +32 -0
  53. data/lib/clacky/tools/web_fetch.rb +2 -1
  54. data/lib/clacky/ui2/components/command_suggestions.rb +13 -3
  55. data/lib/clacky/ui2/components/inline_input.rb +23 -2
  56. data/lib/clacky/ui2/components/input_area.rb +65 -21
  57. data/lib/clacky/ui2/components/modal_component.rb +415 -0
  58. data/lib/clacky/ui2/components/welcome_banner.rb +2 -0
  59. data/lib/clacky/ui2/layout_manager.rb +75 -25
  60. data/lib/clacky/ui2/line_editor.rb +23 -2
  61. data/lib/clacky/ui2/markdown_renderer.rb +31 -10
  62. data/lib/clacky/ui2/screen_buffer.rb +2 -0
  63. data/lib/clacky/ui2/ui_controller.rb +314 -10
  64. data/lib/clacky/ui2.rb +3 -0
  65. data/lib/clacky/ui_interface.rb +50 -0
  66. data/lib/clacky/utils/arguments_parser.rb +31 -3
  67. data/lib/clacky/utils/file_ignore_helper.rb +0 -11
  68. data/lib/clacky/utils/file_processor.rb +20 -4
  69. data/lib/clacky/version.rb +1 -1
  70. data/lib/clacky.rb +19 -8
  71. metadata +44 -9
  72. data/lib/clacky/config.rb +0 -110
  73. /data/lib/clacky/{hook_manager.rb → agent/hook_manager.rb} +0 -0
  74. /data/lib/clacky/{progress_indicator.rb → ui2/progress_indicator.rb} +0 -0
  75. /data/lib/clacky/{thinking_verbs.rb → ui2/thinking_verbs.rb} +0 -0
  76. /data/lib/clacky/{gitignore_parser.rb → utils/gitignore_parser.rb} +0 -0
  77. /data/lib/clacky/{model_pricing.rb → utils/model_pricing.rb} +0 -0
  78. /data/lib/clacky/{trash_directory.rb → utils/trash_directory.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcf90e79799d6f487ba77c084b9b3b72fc7c5252e2ffc7a3e56a0973bb9df977
4
- data.tar.gz: 52a2e19427036920d29ee27c5021f731cfc924fc9c6800e22040a017f74c7fc7
3
+ metadata.gz: d00dc4e2243d55c56a3f5df9838517d7588a96137b18348c750e42374d15f7d8
4
+ data.tar.gz: 0e0fb9b1fce48ac1fb5542e3fb4e5b3744aecb4cd9a51bd15ffa6ada3f892212
5
5
  SHA512:
6
- metadata.gz: 90180817198ad434c4920c855e92215fafe0495f11b93cdf156e1a1a13239219bf3d68f061900265165cf897d601f6913a8815e5c22e60d341cdb3ea6b661bde
7
- data.tar.gz: e09ba63257284794970bd5929d1e310465120e98fe5330be371cd5a00935976f1e537843b7d05e7532400f757564a8be860b3621125f665fecb30eb81ff76199
6
+ metadata.gz: ab6df815f041afa4fa586547299a61562e544de3ae2425b2e9c7a7c9256c05e7b0f79dc824553ccd810939bf3cf3d6e1376b32f4d8a92acedb03efedcfa1e552
7
+ data.tar.gz: a6409dd1ab5456f70ae2f6f576f209d47bb4140956caa14ee18815d91c3c901415219212cc73138e959b43531be9f450938fd8e767e63c1075444c520147fa7e
@@ -0,0 +1,297 @@
1
+ ---
2
+ name: commit
3
+ description: Smart Git commit helper that analyzes changes and creates semantic commits
4
+ disable-model-invocation: false
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Smart Commit Skill
9
+
10
+ This skill helps users create well-structured, semantic git commits by analyzing changes and suggesting appropriate commit messages.
11
+
12
+ ## ⚠️ CRITICAL REQUIREMENT: SINGLE-LINE COMMITS ONLY
13
+
14
+ **ALL commit messages created by this skill MUST be single-line only.**
15
+
16
+ - ✅ DO: `git commit -m "feat: add user authentication"`
17
+ - ❌ DON'T: Multi-line commits with body text
18
+ - ❌ DON'T: Multiple `-m` flags
19
+ - ❌ DON'T: Commit messages with `\n` or additional paragraphs
20
+
21
+ Keep commits concise and focused. If more detail is needed, suggest adding it separately in PR descriptions or documentation.
22
+
23
+ ## Overview
24
+
25
+ This skill automates the process of reviewing git changes and creating meaningful, conventional commits following the semantic commit format (feat/fix/chore/test).
26
+
27
+ ## Usage
28
+
29
+ To use this skill, simply say:
30
+ - "Help me commit my changes"
31
+ - "Create semantic commits"
32
+ - "Review and commit changes"
33
+ - Use the command: `/commit`
34
+
35
+ ## Process Steps
36
+
37
+ ### 1. Analyze Git Status
38
+
39
+ First, check the current git status to understand:
40
+ - What files have been modified, added, or deleted
41
+ - Which files are staged vs unstaged
42
+ - Overall state of the working directory
43
+
44
+ ```bash
45
+ git status
46
+ git diff --stat
47
+ ```
48
+
49
+ ### 2. Review Changes in Detail
50
+
51
+ For each changed file, analyze:
52
+ - The nature of changes (new feature, bug fix, refactoring, tests, documentation)
53
+ - Scope of changes (which component/module)
54
+ - Impact level (minor tweak vs major change)
55
+
56
+ ```bash
57
+ git diff <file>
58
+ ```
59
+
60
+ ### 3. Generate Commit Messages
61
+
62
+ Based on the analysis, generate commit messages following the conventional commit format:
63
+
64
+ **Format**: `<type>: <description>`
65
+
66
+ **Types**:
67
+ - `feat`: New features or functionality
68
+ - `fix`: Bug fixes
69
+ - `chore`: Routine tasks, maintenance, dependencies
70
+ - `test`: Adding or modifying tests
71
+ - `docs`: Documentation changes
72
+ - `refactor`: Code refactoring without changing functionality
73
+ - `style`: Code style changes (formatting, whitespace)
74
+ - `perf`: Performance improvements
75
+
76
+ **CRITICAL GUIDELINES**:
77
+ - **MUST BE SINGLE-LINE**: Commit messages MUST be a single line only. DO NOT create multi-line commit messages.
78
+ - Keep messages concise (ideally under 50 characters)
79
+ - Use imperative mood ("add feature" not "added feature")
80
+ - Don't end with a period
81
+ - Be specific but brief
82
+ - One logical change per commit
83
+ - If more detail is needed, suggest adding it in PR description or commit body separately, but the initial commit MUST be single-line
84
+
85
+ **Examples**:
86
+ - `feat: add user authentication`
87
+ - `fix: resolve memory leak in parser`
88
+ - `chore: update dependencies`
89
+ - `test: add unit tests for validator`
90
+ - `docs: update README installation steps`
91
+
92
+ ### 4. Group Changes
93
+
94
+ Organize changes into logical commits:
95
+ - Group related changes together
96
+ - Separate features, fixes, and chores
97
+ - Keep commits atomic and focused
98
+ - Suggest the order of commits
99
+
100
+ ### 5. Present Suggestions
101
+
102
+ Show the user:
103
+ - List of proposed commits
104
+ - Files included in each commit
105
+ - Commit message for each group
106
+ - Brief explanation of the grouping logic
107
+
108
+ Format:
109
+ ```
110
+ Commit 1: feat: add login endpoint
111
+ - lib/api/auth.rb
112
+ - spec/api/auth_spec.rb
113
+
114
+ Commit 2: fix: resolve timeout in database connection
115
+ - lib/database/connection.rb
116
+
117
+ Commit 3: chore: update rubocop configuration
118
+ - .rubocop.yml
119
+ ```
120
+
121
+ ### 6. Get User Confirmation
122
+
123
+ Ask the user:
124
+ - Review the proposed commits
125
+ - Confirm if they want to proceed
126
+ - Allow modifications if needed
127
+ - Get explicit approval before committing
128
+
129
+ ### 7. Execute Commits
130
+
131
+ For each approved commit:
132
+ ```bash
133
+ # Stage specific files
134
+ git add <file1> <file2> ...
135
+
136
+ # Create commit with SINGLE-LINE message only
137
+ git commit -m "<type>: <description>"
138
+ ```
139
+
140
+ **IMPORTANT**:
141
+ - Use ONLY `git commit -m "single line message"` format
142
+ - DO NOT use multi-line commits with additional body text
143
+ - DO NOT use `-m` flag multiple times
144
+ - Keep the commit message as a single, concise line
145
+
146
+ Provide feedback after each commit:
147
+ - Confirm successful commit
148
+ - Show commit hash
149
+ - Display summary
150
+
151
+ ### 8. Final Summary
152
+
153
+ After all commits:
154
+ - Show total number of commits created
155
+ - List all commit messages
156
+ - Suggest next steps (e.g., git push)
157
+
158
+ ## Commands Used
159
+
160
+ ```bash
161
+ # Check status
162
+ git status
163
+ git status --short
164
+
165
+ # View changes
166
+ git diff
167
+ git diff --stat
168
+ git diff <file>
169
+
170
+ # Stage files
171
+ git add <file>
172
+
173
+ # Create commit (SINGLE-LINE only)
174
+ git commit -m "type: single line description"
175
+
176
+ # NEVER use multi-line format like:
177
+ # git commit -m "title" -m "body" ❌ DON'T DO THIS
178
+ # git commit -m "title\n\nbody" ❌ DON'T DO THIS
179
+
180
+ # View commit history
181
+ git log --oneline -n 5
182
+ ```
183
+
184
+ ## Workflow Example
185
+
186
+ ```
187
+ User: /commit
188
+
189
+ AI:
190
+ 1. Analyzing git status...
191
+ Found 5 modified files
192
+
193
+ 2. Reviewing changes...
194
+ - lib/user.rb: New user registration feature
195
+ - lib/auth.rb: Fix password validation bug
196
+ - spec/user_spec.rb: Tests for user registration
197
+ - spec/auth_spec.rb: Tests for auth fix
198
+ - Gemfile: Updated dependencies
199
+
200
+ 3. Proposed commits:
201
+
202
+ Commit 1: feat: add user registration
203
+ - lib/user.rb
204
+ - spec/user_spec.rb
205
+
206
+ Commit 2: fix: correct password validation logic
207
+ - lib/auth.rb
208
+ - spec/auth_spec.rb
209
+
210
+ Commit 3: chore: update gem dependencies
211
+ - Gemfile
212
+
213
+ Do you want to proceed with these commits? (yes/no)
214
+
215
+ User: yes
216
+
217
+ AI:
218
+ ✓ Commit 1 created (a1b2c3d): feat: add user registration
219
+ ✓ Commit 2 created (e4f5g6h): fix: correct password validation logic
220
+ ✓ Commit 3 created (i7j8k9l): chore: update gem dependencies
221
+
222
+ Summary: 3 commits created successfully!
223
+ Next steps: Review with 'git log' or push with 'git push'
224
+ ```
225
+
226
+ ## Best Practices
227
+
228
+ ### Commit Message Rules
229
+ - **MUST be single-line only** - Never use multi-line commit messages
230
+ - Start with lowercase (except proper nouns)
231
+ - Use present tense imperative
232
+ - Be specific but concise
233
+ - Focus on "what" and "why", not "how"
234
+ - Maximum 72 characters for the single line
235
+
236
+ ### Commit Organization
237
+ - One logical change per commit
238
+ - Keep features separate from fixes
239
+ - Don't mix refactoring with new features
240
+ - Test files go with their related code changes
241
+
242
+ ### When to Split Commits
243
+ - Multiple unrelated features
244
+ - Features and bug fixes mixed
245
+ - Code changes and config changes
246
+ - Different modules/components affected
247
+
248
+ ### When to Combine Changes
249
+ - Related test and implementation
250
+ - Multiple files for same feature
251
+ - Complementary changes for same fix
252
+
253
+ ## Error Handling
254
+
255
+ - **No changes detected**: Inform user and exit gracefully
256
+ - **Merge conflicts**: Warn user to resolve conflicts first
257
+ - **Detached HEAD**: Alert user about repository state
258
+ - **Uncommitted changes during conflict**: Suggest stashing or committing
259
+ - **Empty commit message**: Request user input for clarification
260
+
261
+ ## Safety Features
262
+
263
+ - Always review changes before committing
264
+ - Require user confirmation before executing commits
265
+ - Show exactly which files will be in each commit
266
+ - Allow user to modify suggestions
267
+ - Never force commits without approval
268
+ - Preserve git history integrity
269
+
270
+ ## Integration with Workflow
271
+
272
+ This skill works best:
273
+ - After completing a feature or fix
274
+ - Before pushing to remote
275
+ - During code review preparation
276
+ - When cleaning up messy commit history (use with `git reset` first)
277
+
278
+ ## Notes
279
+
280
+ - This skill does NOT push commits (user controls when to push)
281
+ - Follows conventional commits specification
282
+ - Encourages atomic, well-documented commits
283
+ - Helps maintain clean git history
284
+ - Useful for both beginners and experienced developers
285
+
286
+ ## Dependencies
287
+
288
+ - Git installed and configured
289
+ - Working directory is a git repository
290
+ - User has permissions to commit
291
+ - Changes exist to commit
292
+
293
+ ## Version History
294
+
295
+ - Created: 2025-02-01
296
+ - Purpose: Improve commit quality and development workflow
297
+ - Compatible with: Any git repository
@@ -0,0 +1,253 @@
1
+ ---
2
+ name: gem-release
3
+ description: Automates the complete process of releasing a new version of the openclacky Ruby gem
4
+ disable-model-invocation: false
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Gem Release Skill
9
+
10
+ This skill automates the complete process of releasing a new version of the openclacky Ruby gem.
11
+
12
+ ## Overview
13
+
14
+ This skill handles the entire gem release workflow from version bumping to publishing on RubyGems and creating GitHub releases.
15
+
16
+ ## Usage
17
+
18
+ To use this skill, simply say:
19
+ - "Release a new version"
20
+ - "Publish a new gem version"
21
+ - Use the command: `/gem-release`
22
+
23
+ ## Process Steps
24
+
25
+ ### 1. Pre-Release Checks
26
+ - Check for uncommitted changes in the working directory
27
+ - Verify all tests pass before proceeding
28
+ - Ensure the repository is in a clean state
29
+
30
+ ### 2. Version Management
31
+ - Read current version from `lib/clacky/version.rb`
32
+ - Increment version number (typically patch version: x.y.z → x.y.z+1)
33
+ - Update the VERSION constant in the version file
34
+
35
+ ### 3. Quality Assurance
36
+ - Run the full test suite with `bundle exec rspec`
37
+ - Ensure all 167+ tests pass
38
+ - Verify no regressions introduced
39
+
40
+ ### 4. Build Process
41
+ - Build the gem using `gem build openclacky.gemspec`
42
+ - Generate the `.gem` file for distribution
43
+ - Handle any build warnings appropriately
44
+
45
+ ### 5. Update Gemfile.lock and Verify CI
46
+
47
+ 1. **Update Gemfile.lock**
48
+ ```bash
49
+ bundle install
50
+ ```
51
+ This ensures Gemfile.lock reflects the new version.
52
+
53
+ 2. **Commit Gemfile.lock Changes**
54
+ ```bash
55
+ git add Gemfile.lock
56
+ git commit -m "chore: update Gemfile.lock to v{version}"
57
+ ```
58
+
59
+ 3. **Push and Verify CI**
60
+ ```bash
61
+ git push origin main
62
+ ```
63
+ - Wait for CI pipeline to complete successfully
64
+ - Verify all tests pass
65
+ - If CI fails, fix issues before proceeding
66
+
67
+ 4. **Proceed Only After CI Success**
68
+ - If CI fails: stop, fix issues, and restart the release process
69
+ - If CI passes: continue to build and publish
70
+
71
+ ### 6. Build and Publish Gem
72
+
73
+ 1. **Build the Gem**
74
+ ```bash
75
+ gem build openclacky.gemspec
76
+ ```
77
+ Generates `openclacky-{version}.gem` file.
78
+
79
+ 2. **Publish to RubyGems.org**
80
+ ```bash
81
+ gem push openclacky-{version}.gem
82
+ ```
83
+ Verify successful publication.
84
+
85
+ 3. **Create Git Tag and Push**
86
+ ```bash
87
+ git tag v{version}
88
+ git push origin main --tags
89
+ ```
90
+
91
+ 4. **Verify Publication**
92
+ - Check gem appears on RubyGems.org
93
+ - Verify version information is correct
94
+
95
+ ### 6. Documentation - CHANGELOG Writing Process
96
+
97
+ **Critical Step: Review Commits Before Writing CHANGELOG**
98
+
99
+ 1. **Find Previous Version Tag**
100
+ - Get the latest version tag (e.g., v0.6.3)
101
+ - Use `git describe --tags --abbrev=0` or manually identify
102
+
103
+ 2. **Gather All Commits Since Last Release**
104
+ ```bash
105
+ git log {previous_tag}..HEAD --oneline
106
+ git diff {previous_tag}..HEAD --stat
107
+ ```
108
+
109
+ 3. **Analyze and Categorize Commits**
110
+ - Review each commit message and its changes
111
+ - Categorize into:
112
+ - **Major Features**: User-visible functionality additions
113
+ - **Improvements**: Performance, UX, architecture enhancements
114
+ - **Bug Fixes**: Error corrections and issue resolutions
115
+ - **Changes**: Breaking changes or significant refactoring
116
+ - **Minor Details**: Small fixes, style changes, trivial updates
117
+
118
+ 4. **Write CHANGELOG Entries**
119
+
120
+ **Format for Significant Items:**
121
+ ```
122
+ ## [Version] - Date
123
+
124
+ ### Added
125
+ - Feature description (link to related commits)
126
+
127
+ ### Improved
128
+ - Enhancement description
129
+
130
+ ### Fixed
131
+ - Bug fix description
132
+
133
+ ### Changed
134
+ - Breaking change description
135
+ ```
136
+
137
+ **Format for Minor Items (group under "More"):**
138
+ ```
139
+ ### More
140
+ - Minor fix 1
141
+ - Minor fix 2
142
+ ```
143
+
144
+ 5. **Prioritization Rules**:
145
+ - Place user-facing value at the top
146
+ - Group related commits together
147
+ - Skip very trivial commits (typos, minor formatting)
148
+ - Use imperative mood ("Add" not "Added")
149
+
150
+ 6. **Example CHANGELOG Section**:
151
+ ```markdown
152
+ ## [0.6.4] - 2026-02-03
153
+
154
+ ### Added
155
+ - Anthropic API support with full Claude model integration
156
+ - ClaudeCode environment compatibility (ANTHROPIC_API_KEY support)
157
+
158
+ ### Improved
159
+ - API client architecture for multi-provider support
160
+ - Config loading with source tracking
161
+
162
+ ### Fixed
163
+ - Handle absolute paths correctly in glob tool
164
+
165
+ ### More
166
+ - Update dependencies
167
+ - Minor style adjustments
168
+ ```
169
+
170
+ 7. **Commit and Push Documentation Updates**
171
+ - Commit CHANGELOG.md changes
172
+ - Push to remote repository
173
+
174
+ ### 7. Final Verification
175
+ - Confirm the gem appears on RubyGems.org
176
+ - Check that version information is correct
177
+ - Verify installation works for end users
178
+
179
+ ## Commands Used
180
+
181
+ ```bash
182
+ # Pre-release checks
183
+ git status --porcelain
184
+
185
+ # Run tests
186
+ bundle exec rspec
187
+
188
+ # Update Gemfile.lock
189
+ bundle install
190
+ git add Gemfile.lock
191
+ git commit -m "chore: update Gemfile.lock to vX.Y.Z"
192
+ git push origin main
193
+
194
+ # Build and publish gem
195
+ gem build openclacky.gemspec
196
+ gem push openclacky-X.Y.Z.gem
197
+
198
+ # Git operations
199
+ git add lib/clacky/version.rb
200
+ git commit -m "chore: bump version to X.Y.Z"
201
+ git tag vX.Y.Z
202
+ git push origin main
203
+ git push origin --tags
204
+ ```
205
+
206
+ ## File Locations
207
+
208
+ - Version file: `lib/clacky/version.rb`
209
+ - Gem specification: `openclacky.gemspec`
210
+ - Changelog: `CHANGELOG.md`
211
+ - Built gem: `openclacky-{version}.gem`
212
+
213
+ ## Success Criteria
214
+
215
+ - All tests pass
216
+ - CI pipeline completes successfully
217
+ - Gemfile.lock updated and committed
218
+ - New version successfully published to RubyGems
219
+ - Git repository updated with version tag
220
+ - CHANGELOG.md updated with release notes
221
+ - No build or deployment errors
222
+
223
+ ## Error Handling
224
+
225
+ - If tests fail, stop the process and report issues
226
+ - If CI fails after Gemfile.lock update, fix issues before proceeding
227
+ - If gem build fails, check gemspec configuration
228
+ - If git push fails, verify repository permissions
229
+ - If gem push fails, check RubyGems credentials
230
+
231
+ ## Notes
232
+
233
+ - This skill follows semantic versioning
234
+ - Always update CHANGELOG.md as part of the release
235
+ - Verify RubyGems.org shows the new version after publication
236
+ - The search index on RubyGems may take a few minutes to update
237
+
238
+ ## Dependencies
239
+
240
+ - Ruby development environment
241
+ - Git repository access
242
+ - RubyGems account with push permissions
243
+ - Bundle and RSpec for testing
244
+
245
+ ## Version History
246
+
247
+ - Created: 2026-01-18
248
+ - Used for: openclacky gem releases
249
+ - Compatible with: Ruby gems following standard conventions
250
+
251
+ ## User Experience Summary
252
+
253
+ This skill takes the complexity out of gem releases. Instead of remembering 8+ different commands and worrying about the correct order, you just say "release a new version" and the AI handles everything - from running tests to publishing on RubyGems. It's like having an experienced release engineer on your team who never forgets a step, always runs the tests first, and makes sure your changelog is updated. The whole process that used to take 15-20 minutes and multiple terminal windows now happens smoothly in one conversation, with clear feedback at each step so you know exactly what's happening.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: test-skill
3
+ description: A test skill for demonstrating skill loading
4
+ disable-model-invocation: false
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Test Skill
9
+
10
+ This is a test skill to verify that skills are being loaded into the system prompt.
11
+
12
+ When you see this skill in your context, you should:
13
+ 1. Acknowledge that you have access to this skill
14
+ 2. Explain what this skill does
15
+ 3. Demonstrate that you can use it
data/.clackyrules CHANGED
@@ -25,7 +25,8 @@ It provides chat functionality and autonomous AI agent capabilities with tool us
25
25
  - **IMPORTANT**: All code comments must be written in English
26
26
  - Add descriptive comments for complex logic
27
27
  - Use clear, self-documenting code with English naming
28
- - **IMPORTANT**: Always use inline `private` with method definitions (e.g., `private def method_name`). Do NOT use standalone `private` keyword
28
+ - **IMPORTANT**: Always use inline `private` with instance method definitions (e.g., `private def method_name`). Do NOT use standalone `private` keyword
29
+ - **IMPORTANT**: For class methods (`def self.method_name`), do NOT use `private`. Class methods should be public
29
30
 
30
31
  ### Architecture Patterns
31
32
  - Tools inherit from `Clacky::Tools::Base`
@@ -45,6 +46,7 @@ It provides chat functionality and autonomous AI agent capabilities with tool us
45
46
  - **IMPORTANT**: When developing new features, write RSpec tests as needed and ensure they pass
46
47
  - **DO NOT** write custom test scripts unless explicitly requested by the user
47
48
  - **DO NOT** create markdown documentation unless explicitly requested by the user
49
+ - **IMPORTANT**: When testing clacky commands or debugging, always use `bundle exec ruby bin/clacky` instead of the global `clacky` command. The global command loads the system-installed gem version (e.g., `openclacky-0.7.0`), not your local development code
48
50
 
49
51
  ### Tool Development
50
52
  When adding new tools:
data/CHANGELOG.md CHANGED
@@ -7,6 +7,75 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.7.0] - 2026-02-06
11
+
12
+ This is a major release with significant improvements to skill system, conversation memory management, and user experience.
13
+
14
+ ### 🎯 Major Features
15
+
16
+ **Skill System**
17
+ - Complete skill framework allowing users to extend AI capabilities with custom workflows
18
+ - Skills can be invoked using shorthand syntax (e.g., `/commit`, `/gem-release`)
19
+ - Support for user-created skills in `.clacky/skills/` directory
20
+ - Built-in skills: commit (smart Git helper), gem-release (automated publishing)
21
+
22
+ **Memory Compression**
23
+ - Intelligent message compression to handle long conversations efficiently
24
+ - LLM-based compression strategy that preserves context while reducing tokens
25
+ - Automatic compression triggered based on message count and token usage
26
+ - Significant reduction in API costs for extended sessions
27
+
28
+ **Configuration Improvements**
29
+ - API key validation on startup with helpful prompts
30
+ - Interactive configuration UI with modal components
31
+ - Source tracking for configuration (file, environment, defaults)
32
+ - Better error messages and user guidance
33
+
34
+ ### Added
35
+ - Request user feedback tool for interactive prompts during execution
36
+ - Version display in welcome banner
37
+ - File size limits for file_reader tool to prevent performance issues
38
+ - Debug logging throughout the codebase
39
+
40
+ ### Improved
41
+ - CLI output formatting and readability
42
+ - Error handling with comprehensive debug information
43
+ - Test coverage with 367 passing tests
44
+ - Tool call output optimization for cleaner logs
45
+
46
+ ### Changed
47
+ - Simplified CLI architecture by removing unused code
48
+ - Enhanced modal component with new configuration features
49
+
50
+ ### Fixed
51
+ - Message compression edge cases
52
+ - Various test spec improvements
53
+
54
+ ## [0.6.4] - 2026-02-03
55
+
56
+ ### Added
57
+ - Anthropic API support with full Claude model integration
58
+ - ClaudeCode environment compatibility (ANTHROPIC_API_KEY support)
59
+ - Model configuration with Anthropic defaults (claude-3-5-sonnet-20241022)
60
+ - Enhanced error handling with AgentError and ToolCallError classes
61
+ - format_tool_results for tool result formatting in agent execution
62
+ - Comprehensive test suite for Anthropic API and configuration
63
+ - Absolute path handling in glob tool
64
+
65
+ ### Improved
66
+ - API client architecture for multi-provider support (OpenAI + Anthropic)
67
+ - Config loading with source tracking (file, ClaudeCode, default)
68
+ - Agent execution loop with improved tool result handling
69
+ - Edit tool with improved pattern matching
70
+ - User tip display in terminal
71
+
72
+ ### Changed
73
+ - Refactored Error class to AgentError base class
74
+ - Renamed connection methods for clarity (connection → openai_connection)
75
+
76
+ ### Fixed
77
+ - Handle absolute paths correctly in glob tool
78
+
10
79
  ## [0.6.3] - 2026-02-01
11
80
 
12
81
  ### Added
@@ -151,7 +220,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
151
220
 
152
221
  ### Added
153
222
  - **Agent Mode**: Autonomous AI agent with tool execution capabilities
154
- - **Built-in Tools**:
223
+ - **Built-in Tools**:
155
224
  - `safe_shell` - Safe shell command execution with security checks
156
225
  - `file_reader` - Read file contents
157
226
  - `write` - Create/overwrite files with diff preview
@@ -163,7 +232,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
163
232
  - `todo_manager` - Task planning and tracking
164
233
  - `run_project` - Project dev server management
165
234
  - **Session Management**: Save, resume, and list conversation sessions
166
- - **Permission Modes**:
235
+ - **Permission Modes**:
167
236
  - `auto_approve` - Automatically execute all tools
168
237
  - `confirm_safes` - Auto-execute safe operations, confirm risky ones
169
238
  - `confirm_edits` - Confirm file edits only