@armstrongnate/april 0.0.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.
- package/README.md +81 -0
- package/config.example.yaml +16 -0
- package/dist/cli.js +122 -0
- package/dist/commands/init.js +48 -0
- package/dist/config.js +97 -0
- package/dist/index.js +114 -0
- package/dist/logger.js +36 -0
- package/dist/processes.js +138 -0
- package/dist/server.js +58 -0
- package/dist/service/index.js +11 -0
- package/dist/service/launchd.js +136 -0
- package/dist/service/paths.js +27 -0
- package/dist/service/systemd.js +117 -0
- package/dist/slug.js +21 -0
- package/dist/spawner.js +242 -0
- package/dist/types.js +1 -0
- package/dist/webhook.js +52 -0
- package/package.json +33 -0
- package/skills/issue-worker/SKILL.md +53 -0
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@armstrongnate/april",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "She does all the work so you don't have to. Watches GitHub issues and spawns Claude Code sessions to work them.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"april": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"skills",
|
|
12
|
+
"config.example.yaml",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"dev": "tsx src/index.ts",
|
|
18
|
+
"start": "node dist/index.js",
|
|
19
|
+
"prepublishOnly": "pnpm build"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=22.0.0"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"fastify": "^5.8.4",
|
|
26
|
+
"yaml": "^2.8.3"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^25.5.2",
|
|
30
|
+
"tsx": "^4.21.0",
|
|
31
|
+
"typescript": "^6.0.2"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: issue-worker
|
|
3
|
+
description: Autonomously work a GitHub issue end-to-end — read, implement, and open a PR with no human input required.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# issue-worker
|
|
7
|
+
|
|
8
|
+
You have been assigned a GitHub issue. Work it to completion autonomously. Do not stop to ask for approval or confirmation — go straight from reading the issue to opening a PR.
|
|
9
|
+
|
|
10
|
+
## 1. Read the issue
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
gh issue view {issue_number} --repo {owner}/{repo} --comments
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 2. Understand the context
|
|
17
|
+
|
|
18
|
+
- Read CLAUDE.md for project conventions
|
|
19
|
+
- Identify relevant files and existing patterns
|
|
20
|
+
- Check for existing tests covering the affected code
|
|
21
|
+
|
|
22
|
+
## 3. Implement
|
|
23
|
+
|
|
24
|
+
- Make the changes
|
|
25
|
+
- Write or update tests as appropriate
|
|
26
|
+
- Ensure the code builds/lints/passes tests
|
|
27
|
+
|
|
28
|
+
## 4. Review and simplify
|
|
29
|
+
|
|
30
|
+
Run `git diff` and review your own changes. Fix any issues before committing.
|
|
31
|
+
|
|
32
|
+
- **Correctness:** Does it fully address the issue? Missing edge cases?
|
|
33
|
+
- **Simplify:** Can anything be combined, inlined, or removed? Prefer fewer files, less indirection, and no unnecessary abstractions.
|
|
34
|
+
- **Reuse:** Are you duplicating logic that already exists in the codebase? Use existing helpers and patterns.
|
|
35
|
+
- **Cleanup:** Remove leftover debug code, TODOs, unused imports, and dead code.
|
|
36
|
+
- **Style:** Match the conventions of the surrounding code.
|
|
37
|
+
- **Tests:** Are the tests meaningful, not just testing mocks?
|
|
38
|
+
|
|
39
|
+
## 5. Commit, push, and open a PR
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
gh pr create --title "..." --body "..."
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then update the issue labels:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
gh issue edit {issue_number} --repo {owner}/{repo} --add-label agent:review --remove-label agent:wip
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 6. Post to Slack (if instructed)
|
|
52
|
+
|
|
53
|
+
If the prompt specifies a Slack channel, use the Slack MCP tool to post a message with a link to the PR. Format: `<pr_url|PR> title of the pr`
|