Skip to content

Commit 20d6414

Browse files
nhortonclaude
andauthored
Add automated release workflow and update changelog structure (#131)
* feat: Add manual release workflow with changelog automation - Create create-release.yml workflow for manual release creation - Workflow takes version number as input, validates format - Updates CHANGELOG.md: converts Unreleased section to new version with date - Adds fresh Unreleased section with placeholder categories - Updates pyproject.toml version and runs uv sync for lock file - Commits changes directly to main, creates tag, and publishes GitHub release - Add Unreleased section to CHANGELOG.md for immediate use - Add missing version links (0.5.1, 0.5.2) to CHANGELOG footer https://claude.ai/code/session_01SdXt6AhvcV6GzfLkoePAby * feat: Add manual release workflow and update commit job for changelog handling - Add create-release.yml workflow for manual release creation - Takes version number as input, validates X.Y.Z format - Updates CHANGELOG.md: converts Unreleased section to new version with date - Adds fresh Unreleased section with placeholder categories - Updates pyproject.toml version and runs uv sync - Commits to main, creates tag, and publishes GitHub release - Update commit job (v1.4.0) with changelog guidance: - Changelog entries must go in the [Unreleased] section - NEVER modify version numbers in pyproject.toml or CHANGELOG.md - Added quality criteria for changelog handling https://claude.ai/code/session_01SdXt6AhvcV6GzfLkoePAby * chore: Regenerate skills after deepwork install https://claude.ai/code/session_01SdXt6AhvcV6GzfLkoePAby --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent bdb7fe0 commit 20d6414

File tree

24 files changed

+333
-836
lines changed

24 files changed

+333
-836
lines changed

.claude/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@
128128
"Edit(./.deepwork/**)",
129129
"Write(./.deepwork/**)",
130130
"Bash(deepwork:*)",
131-
"Bash(.claude/hooks/commit_job_git_commit.sh:*)"
131+
"Bash(.claude/hooks/commit_job_git_commit.sh:*)",
132+
"Bash(./.deepwork/jobs/deepwork_jobs/make_new_job.sh:*)"
132133
]
133134
},
134135
"hooks": {

.claude/skills/add_platform.add_capabilities/SKILL.md

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,6 @@
11
---
22
name: add_platform.add_capabilities
3-
description: "Updates job schema and adapters with any new hook events the platform supports. Use after research to extend DeepWork's hook system."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: prompt
9-
prompt: |
10-
Verify the capability additions meet ALL criteria:
11-
1. Any new hooks from the platform (for slash commands only) are added to src/deepwork/schemas/job_schema.py
12-
2. All existing adapters in src/deepwork/adapters.py are updated with the new hook fields
13-
(set to None/null if the platform doesn't support that hook)
14-
3. Only hooks available on slash command definitions are added (not general CLI hooks)
15-
4. job_schema.py remains valid Python with no syntax errors
16-
5. adapters.py remains consistent - all adapters have the same hook fields
17-
6. If no new hooks are needed, document why in a comment
18-
19-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
20-
21-
SubagentStop:
22-
- hooks:
23-
- type: prompt
24-
prompt: |
25-
Verify the capability additions meet ALL criteria:
26-
1. Any new hooks from the platform (for slash commands only) are added to src/deepwork/schemas/job_schema.py
27-
2. All existing adapters in src/deepwork/adapters.py are updated with the new hook fields
28-
(set to None/null if the platform doesn't support that hook)
29-
3. Only hooks available on slash command definitions are added (not general CLI hooks)
30-
4. job_schema.py remains valid Python with no syntax errors
31-
5. adapters.py remains consistent - all adapters have the same hook fields
32-
6. If no new hooks are needed, document why in a comment
33-
34-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
35-
36-
---
3+
description: "Updates job schema and adapters with any new hook events the platform supports. Use after research to extend DeepWork's hook system."user-invocable: false---
374

385
# add_platform.add_capabilities
396

@@ -233,14 +200,6 @@ Use branch format: `deepwork/add_platform-[instance]-YYYYMMDD`
233200
- Do NOT proceed without required inputs; ask the user if any are missing
234201
- Do NOT modify files outside the scope of this step's defined outputs
235202

236-
## Quality Validation
237-
238-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
239-
240-
241-
242-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
243-
244203
## On Completion
245204

246205
1. Verify outputs are created

.claude/skills/add_platform.implement/SKILL.md

Lines changed: 5 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,10 @@
11
---
22
name: add_platform.implement
3-
description: "Creates platform adapter, templates, tests with 100% coverage, and README documentation. Use after adding hook capabilities."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: command
9-
command: ".deepwork/jobs/add_platform/hooks/run_tests.sh"
10-
- type: prompt
11-
prompt: |
12-
Verify the implementation meets ALL criteria:
13-
1. Platform adapter class is added to src/deepwork/adapters.py
14-
2. Templates exist in src/deepwork/templates/<platform>/ with appropriate command structure
15-
3. Tests exist for all new functionality
16-
4. Test coverage is 100% for new code (run: uv run pytest --cov)
17-
5. All tests pass
18-
6. README.md is updated with:
19-
- New platform listed in supported platforms
20-
- Installation instructions for the platform
21-
- Any platform-specific notes
22-
23-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
24-
25-
SubagentStop:
26-
- hooks:
27-
- type: command
28-
command: ".deepwork/jobs/add_platform/hooks/run_tests.sh"
29-
- type: prompt
30-
prompt: |
31-
Verify the implementation meets ALL criteria:
32-
1. Platform adapter class is added to src/deepwork/adapters.py
33-
2. Templates exist in src/deepwork/templates/<platform>/ with appropriate command structure
34-
3. Tests exist for all new functionality
35-
4. Test coverage is 100% for new code (run: uv run pytest --cov)
36-
5. All tests pass
37-
6. README.md is updated with:
38-
- New platform listed in supported platforms
39-
- Installation instructions for the platform
40-
- Any platform-specific notes
41-
42-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
43-
44-
---
3+
description: "Creates platform adapter, templates, tests with 100% coverage, and README documentation. Use after adding hook capabilities."user-invocable: falsehooks: Stop:
4+
- hooks: - type: command
5+
command: ".deepwork/jobs/add_platform/hooks/run_tests.sh" SubagentStop:
6+
- hooks: - type: command
7+
command: ".deepwork/jobs/add_platform/hooks/run_tests.sh"---
458

469
# add_platform.implement
4710

@@ -336,15 +299,7 @@ Use branch format: `deepwork/add_platform-[instance]-YYYYMMDD`
336299
- Do NOT proceed without required inputs; ask the user if any are missing
337300
- Do NOT modify files outside the scope of this step's defined outputs
338301

339-
## Quality Validation
340-
341-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
342-
343-
344302
**Validation script**: `.deepwork/jobs/add_platform/hooks/run_tests.sh` (runs automatically)
345-
346-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
347-
348303
## On Completion
349304

350305
1. Verify outputs are created

.claude/skills/add_platform.research/SKILL.md

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,6 @@
11
---
22
name: add_platform.research
3-
description: "Captures CLI configuration and hooks system documentation for the new platform. Use when starting platform integration."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: prompt
9-
prompt: |
10-
Verify the research output meets ALL criteria:
11-
1. Both files exist in doc/platforms/<platform>/: cli_configuration.md and hooks_system.md
12-
2. Each file has a comment at the top with:
13-
- Last updated date
14-
- Source URL where the documentation was obtained
15-
3. cli_configuration.md covers how the platform's CLI is configured
16-
4. hooks_system.md covers hooks available for slash command definitions ONLY
17-
5. No extraneous documentation (only these two specific topics)
18-
6. Documentation is comprehensive enough to implement the platform
19-
20-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
21-
22-
SubagentStop:
23-
- hooks:
24-
- type: prompt
25-
prompt: |
26-
Verify the research output meets ALL criteria:
27-
1. Both files exist in doc/platforms/<platform>/: cli_configuration.md and hooks_system.md
28-
2. Each file has a comment at the top with:
29-
- Last updated date
30-
- Source URL where the documentation was obtained
31-
3. cli_configuration.md covers how the platform's CLI is configured
32-
4. hooks_system.md covers hooks available for slash command definitions ONLY
33-
5. No extraneous documentation (only these two specific topics)
34-
6. Documentation is comprehensive enough to implement the platform
35-
36-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
37-
38-
---
3+
description: "Captures CLI configuration and hooks system documentation for the new platform. Use when starting platform integration."user-invocable: false---
394

405
# add_platform.research
416

@@ -284,14 +249,6 @@ Use branch format: `deepwork/add_platform-[instance]-YYYYMMDD`
284249
- Do NOT proceed without required inputs; ask the user if any are missing
285250
- Do NOT modify files outside the scope of this step's defined outputs
286251

287-
## Quality Validation
288-
289-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
290-
291-
292-
293-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
294-
295252
## On Completion
296253

297254
1. Verify outputs are created

.claude/skills/add_platform.verify/SKILL.md

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,6 @@
11
---
22
name: add_platform.verify
3-
description: "Sets up platform directories and verifies deepwork install works correctly. Use after implementation to confirm integration."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: prompt
9-
prompt: |
10-
Verify the installation meets ALL criteria:
11-
1. Platform-specific directories/files are added to the deepwork repo as needed
12-
2. Running `deepwork install --platform <platform>` completes without errors
13-
3. Expected command files are created in the platform's command directory
14-
4. Command file content matches the templates and job definitions
15-
5. Established DeepWork jobs (deepwork_jobs, deepwork_rules) are installed correctly
16-
6. The platform can be used alongside existing platforms without conflicts
17-
18-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
19-
20-
SubagentStop:
21-
- hooks:
22-
- type: prompt
23-
prompt: |
24-
Verify the installation meets ALL criteria:
25-
1. Platform-specific directories/files are added to the deepwork repo as needed
26-
2. Running `deepwork install --platform <platform>` completes without errors
27-
3. Expected command files are created in the platform's command directory
28-
4. Command file content matches the templates and job definitions
29-
5. Established DeepWork jobs (deepwork_jobs, deepwork_rules) are installed correctly
30-
6. The platform can be used alongside existing platforms without conflicts
31-
32-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
33-
34-
---
3+
description: "Sets up platform directories and verifies deepwork install works correctly. Use after implementation to confirm integration."user-invocable: false---
354

365
# add_platform.verify
376

@@ -206,14 +175,6 @@ Use branch format: `deepwork/add_platform-[instance]-YYYYMMDD`
206175
- Do NOT proceed without required inputs; ask the user if any are missing
207176
- Do NOT modify files outside the scope of this step's defined outputs
208177

209-
## Quality Validation
210-
211-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
212-
213-
214-
215-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
216-
217178
## On Completion
218179

219180
1. Verify outputs are created

.claude/skills/commit.commit_and_push/SKILL.md

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,6 @@
11
---
22
name: commit.commit_and_push
3-
description: "Verifies changed files, creates commit, and pushes to remote. Use after linting passes to finalize changes."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: prompt
9-
prompt: |
10-
Verify the commit is ready:
11-
1. Changed files list was reviewed by the agent
12-
2. Files match what was modified during this session (or unexpected changes were investigated)
13-
3. Commit was created with appropriate message
14-
4. Changes were pushed to remote
15-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
16-
17-
SubagentStop:
18-
- hooks:
19-
- type: prompt
20-
prompt: |
21-
Verify the commit is ready:
22-
1. Changed files list was reviewed by the agent
23-
2. Files match what was modified during this session (or unexpected changes were investigated)
24-
3. Commit was created with appropriate message
25-
4. Changes were pushed to remote
26-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
27-
28-
---
3+
description: "Verifies changed files, creates commit, and pushes to remote. Use after linting passes to finalize changes."user-invocable: false---
294

305
# commit.commit_and_push
316

@@ -68,14 +43,27 @@ Check the list of changed files against what was modified during this session, e
6843
- Are there any unexpected deleted files?
6944
- Do the line counts seem reasonable for the changes you made?
7045

71-
If changes match expectations, proceed to commit.
46+
If changes match expectations, proceed to the next step.
7247

7348
If there are unexpected changes:
7449
- Investigate why (e.g., lint auto-fixes, generated files)
7550
- If they're legitimate side effects of your work, include them
7651
- If they're unrelated or shouldn't be committed, use `git restore` to discard them
7752

78-
3. **Stage all appropriate changes**
53+
3. **Update CHANGELOG.md if needed**
54+
55+
If your changes include new features, bug fixes, or other notable changes:
56+
- Add entries to the `## [Unreleased]` section of CHANGELOG.md
57+
- Use the appropriate subsection: `### Added`, `### Changed`, `### Fixed`, or `### Removed`
58+
- Write concise descriptions that explain the user-facing impact
59+
60+
**CRITICAL: NEVER modify version numbers**
61+
- Do NOT change the version in `pyproject.toml`
62+
- Do NOT change version headers in CHANGELOG.md (e.g., `## [0.4.2]`)
63+
- Do NOT rename the `## [Unreleased]` section
64+
- Version updates are handled by the release workflow, not commits
65+
66+
4. **Stage all appropriate changes**
7967
```bash
8068
git add -A
8169
```
@@ -93,8 +81,9 @@ Check the list of changed files against what was modified during this session, e
9381
- The style of recent commits
9482
- Conventional commit format if the project uses it
9583

84+
**IMPORTANT:** Use the commit job script (not `git commit` directly):
9685
```bash
97-
git commit -m "commit message here"
86+
.claude/hooks/commit_job_git_commit.sh -m "commit message here"
9887
```
9988

10089
7. **Push to remote**
@@ -110,6 +99,8 @@ Check the list of changed files against what was modified during this session, e
11099

111100
- Changed files list was reviewed by the agent
112101
- Files match what was modified during this session (or unexpected changes were investigated and handled)
102+
- CHANGELOG.md was updated with entries in the `[Unreleased]` section (if changes warrant documentation)
103+
- Version numbers were NOT modified (in pyproject.toml or CHANGELOG.md version headers)
113104
- Commit message follows project conventions
114105
- Commit was created successfully
115106
- Changes were pushed to remote
@@ -156,14 +147,6 @@ Use branch format: `deepwork/commit-[instance]-YYYYMMDD`
156147
- Do NOT proceed without required inputs; ask the user if any are missing
157148
- Do NOT modify files outside the scope of this step's defined outputs
158149

159-
## Quality Validation
160-
161-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
162-
163-
164-
165-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
166-
167150
## On Completion
168151

169152
1. Verify outputs are created

.claude/skills/commit.lint/SKILL.md

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,6 @@
11
---
22
name: commit.lint
3-
description: "Formats and lints code with ruff using a sub-agent. Use after tests pass to ensure code style compliance."
4-
user-invocable: false
5-
hooks:
6-
Stop:
7-
- hooks:
8-
- type: prompt
9-
prompt: |
10-
Verify the linting is complete:
11-
1. ruff format was run successfully
12-
2. ruff check was run successfully (with --fix)
13-
3. No remaining lint errors
14-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
15-
16-
SubagentStop:
17-
- hooks:
18-
- type: prompt
19-
prompt: |
20-
Verify the linting is complete:
21-
1. ruff format was run successfully
22-
2. ruff check was run successfully (with --fix)
23-
3. No remaining lint errors
24-
If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
25-
26-
---
3+
description: "Formats and lints code with ruff using a sub-agent. Use after tests pass to ensure code style compliance."user-invocable: false---
274

285
# commit.lint
296

@@ -150,14 +127,6 @@ Use branch format: `deepwork/commit-[instance]-YYYYMMDD`
150127
- Do NOT proceed without required inputs; ask the user if any are missing
151128
- Do NOT modify files outside the scope of this step's defined outputs
152129

153-
## Quality Validation
154-
155-
Stop hooks will automatically validate your work. The loop continues until all criteria pass.
156-
157-
158-
159-
**To complete**: Include `<promise>✓ Quality Criteria Met</promise>` in your final response only after verifying ALL criteria are satisfied.
160-
161130
## On Completion
162131

163132
1. Verify outputs are created

0 commit comments

Comments
 (0)