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.
- checksums.yaml +4 -4
- data/.clacky/skills/commit/SKILL.md +297 -0
- data/.clacky/skills/gem-release/SKILL.md +253 -0
- data/.clacky/skills/test-skill/SKILL.md +15 -0
- data/.clackyrules +3 -1
- data/CHANGELOG.md +71 -2
- data/docs/HOW-TO-USE-CN.md +96 -0
- data/docs/HOW-TO-USE.md +94 -0
- data/docs/config.example.yml +27 -0
- data/docs/deploy_subagent_design.md +540 -0
- data/docs/time_machine_design.md +247 -0
- data/docs/why-developer.md +371 -0
- data/docs/why-openclacky.md +0 -1
- data/lib/clacky/agent/cost_tracker.rb +180 -0
- data/lib/clacky/agent/llm_caller.rb +54 -0
- data/lib/clacky/agent/message_compressor.rb +119 -0
- data/lib/clacky/agent/message_compressor_helper.rb +534 -0
- data/lib/clacky/agent/session_serializer.rb +152 -0
- data/lib/clacky/agent/skill_manager.rb +138 -0
- data/lib/clacky/agent/system_prompt_builder.rb +96 -0
- data/lib/clacky/agent/time_machine.rb +199 -0
- data/lib/clacky/agent/tool_executor.rb +434 -0
- data/lib/clacky/{tool_registry.rb → agent/tool_registry.rb} +1 -1
- data/lib/clacky/agent.rb +315 -1303
- data/lib/clacky/agent_config.rb +447 -10
- data/lib/clacky/cli.rb +291 -570
- data/lib/clacky/client.rb +107 -52
- data/lib/clacky/default_skills/code-explorer/SKILL.md +41 -0
- data/lib/clacky/default_skills/deploy/SKILL.md +13 -0
- data/lib/clacky/default_skills/deploy/scripts/rails_deploy.rb +383 -0
- data/lib/clacky/default_skills/deploy/tools/check_health.rb +116 -0
- data/lib/clacky/default_skills/deploy/tools/execute_deployment.rb +174 -0
- data/lib/clacky/default_skills/deploy/tools/fetch_runtime_logs.rb +67 -0
- data/lib/clacky/default_skills/deploy/tools/list_services.rb +80 -0
- data/lib/clacky/default_skills/deploy/tools/report_deploy_status.rb +67 -0
- data/lib/clacky/default_skills/deploy/tools/set_deploy_variables.rb +138 -0
- data/lib/clacky/default_skills/new/SKILL.md +55 -0
- data/lib/clacky/json_ui_controller.rb +195 -0
- data/lib/clacky/skill.rb +48 -7
- data/lib/clacky/skill_loader.rb +7 -0
- data/lib/clacky/tools/edit.rb +105 -48
- data/lib/clacky/tools/file_reader.rb +57 -83
- data/lib/clacky/tools/glob.rb +1 -1
- data/lib/clacky/tools/grep.rb +1 -1
- data/lib/clacky/tools/invoke_skill.rb +89 -0
- data/lib/clacky/tools/list_tasks.rb +54 -0
- data/lib/clacky/tools/redo_task.rb +41 -0
- data/lib/clacky/tools/request_user_feedback.rb +84 -0
- data/lib/clacky/tools/safe_shell.rb +1 -1
- data/lib/clacky/tools/shell.rb +74 -62
- data/lib/clacky/tools/trash_manager.rb +1 -1
- data/lib/clacky/tools/undo_task.rb +32 -0
- data/lib/clacky/tools/web_fetch.rb +2 -1
- data/lib/clacky/ui2/components/command_suggestions.rb +13 -3
- data/lib/clacky/ui2/components/inline_input.rb +23 -2
- data/lib/clacky/ui2/components/input_area.rb +65 -21
- data/lib/clacky/ui2/components/modal_component.rb +415 -0
- data/lib/clacky/ui2/components/welcome_banner.rb +2 -0
- data/lib/clacky/ui2/layout_manager.rb +75 -25
- data/lib/clacky/ui2/line_editor.rb +23 -2
- data/lib/clacky/ui2/markdown_renderer.rb +31 -10
- data/lib/clacky/ui2/screen_buffer.rb +2 -0
- data/lib/clacky/ui2/ui_controller.rb +314 -10
- data/lib/clacky/ui2.rb +3 -0
- data/lib/clacky/ui_interface.rb +50 -0
- data/lib/clacky/utils/arguments_parser.rb +31 -3
- data/lib/clacky/utils/file_ignore_helper.rb +0 -11
- data/lib/clacky/utils/file_processor.rb +20 -4
- data/lib/clacky/version.rb +1 -1
- data/lib/clacky.rb +19 -8
- metadata +44 -9
- data/lib/clacky/config.rb +0 -110
- /data/lib/clacky/{hook_manager.rb → agent/hook_manager.rb} +0 -0
- /data/lib/clacky/{progress_indicator.rb → ui2/progress_indicator.rb} +0 -0
- /data/lib/clacky/{thinking_verbs.rb → ui2/thinking_verbs.rb} +0 -0
- /data/lib/clacky/{gitignore_parser.rb → utils/gitignore_parser.rb} +0 -0
- /data/lib/clacky/{model_pricing.rb → utils/model_pricing.rb} +0 -0
- /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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d00dc4e2243d55c56a3f5df9838517d7588a96137b18348c750e42374d15f7d8
|
|
4
|
+
data.tar.gz: 0e0fb9b1fce48ac1fb5542e3fb4e5b3744aecb4cd9a51bd15ffa6ada3f892212
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|