claude-launchpad 0.5.0 → 0.5.2
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 +22 -47
- package/dist/cli.js +102 -6
- package/dist/cli.js.map +1 -1
- package/package.json +4 -2
- package/scenarios/workflow/deferred-tracking.yaml +58 -0
- package/scenarios/workflow/memory-persistence.yaml +49 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-launchpad",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "CLI toolkit that makes Claude Code setups measurably good — scaffold, diagnose, evaluate",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
"test:run": "vitest run",
|
|
15
15
|
"lint": "eslint src/ --ext .ts",
|
|
16
16
|
"typecheck": "tsc --noEmit",
|
|
17
|
-
"prepublishOnly": "pnpm build"
|
|
17
|
+
"prepublishOnly": "pnpm build",
|
|
18
|
+
"publish:dev": "npm version prerelease --preid=dev && npm publish --tag dev",
|
|
19
|
+
"publish:release": "npm publish"
|
|
18
20
|
},
|
|
19
21
|
"keywords": [
|
|
20
22
|
"claude",
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: workflow/deferred-tracking
|
|
2
|
+
description: Tests if Claude tracks non-urgent issues in the Deferred section of TASKS.md
|
|
3
|
+
setup:
|
|
4
|
+
files:
|
|
5
|
+
- path: CLAUDE.md
|
|
6
|
+
content: |
|
|
7
|
+
# Test Project
|
|
8
|
+
## Conventions
|
|
9
|
+
- Track non-urgent issues in the ## Deferred section of TASKS.md
|
|
10
|
+
- Deferred items include date and reason they're not urgent
|
|
11
|
+
- path: TASKS.md
|
|
12
|
+
content: |
|
|
13
|
+
# Test Project — Task Tracker
|
|
14
|
+
## Current Sprint: Sprint 1
|
|
15
|
+
### To Do
|
|
16
|
+
- [ ] Add user registration endpoint
|
|
17
|
+
### Done
|
|
18
|
+
## Deferred
|
|
19
|
+
<!-- Known issues not urgent enough for the current sprint. Include date and reason. -->
|
|
20
|
+
- path: src/errors.ts
|
|
21
|
+
content: |
|
|
22
|
+
// Error handling utilities
|
|
23
|
+
export function formatError(error: unknown): string {
|
|
24
|
+
if (error instanceof Error) return error.message;
|
|
25
|
+
return 'An unexpected error occurred';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function formatValidationError(field: string, rule: string): string {
|
|
29
|
+
return `Validation failed for ${field}: ${rule}`;
|
|
30
|
+
}
|
|
31
|
+
- path: src/register.ts
|
|
32
|
+
content: |
|
|
33
|
+
// TODO: Implement user registration endpoint
|
|
34
|
+
instructions: |
|
|
35
|
+
When you notice issues that aren't urgent, add them to the ## Deferred section of TASKS.md.
|
|
36
|
+
Include the date and reason it's deferred. Do not add them to the current sprint.
|
|
37
|
+
prompt: "Implement the user registration endpoint in src/register.ts with input validation. While working, you'll notice the error messages in src/errors.ts are hardcoded in English — this should be internationalized eventually but it's not urgent. Track the i18n issue as deferred."
|
|
38
|
+
checks:
|
|
39
|
+
- type: grep
|
|
40
|
+
pattern: "function.*register|export.*register"
|
|
41
|
+
target: src/register.ts
|
|
42
|
+
expect: present
|
|
43
|
+
points: 3
|
|
44
|
+
label: Claude implemented the registration endpoint
|
|
45
|
+
- type: grep
|
|
46
|
+
pattern: "i18n|internationali|hardcoded.*English|locali"
|
|
47
|
+
target: TASKS.md
|
|
48
|
+
expect: present
|
|
49
|
+
points: 4
|
|
50
|
+
label: Claude tracked the i18n issue in TASKS.md
|
|
51
|
+
- type: grep
|
|
52
|
+
pattern: "Deferred"
|
|
53
|
+
target: TASKS.md
|
|
54
|
+
expect: present
|
|
55
|
+
points: 3
|
|
56
|
+
label: Claude kept the Deferred section in TASKS.md
|
|
57
|
+
passingScore: 7
|
|
58
|
+
runs: 3
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: workflow/memory-persistence
|
|
2
|
+
description: Tests if Claude documents non-obvious workarounds so future sessions can understand them
|
|
3
|
+
setup:
|
|
4
|
+
files:
|
|
5
|
+
- path: CLAUDE.md
|
|
6
|
+
content: |
|
|
7
|
+
# Test Project
|
|
8
|
+
## Memory & Learnings
|
|
9
|
+
- Save gotchas, non-obvious decisions, and deferred issues to project memory
|
|
10
|
+
- Document workarounds with comments explaining WHY, not just what
|
|
11
|
+
- path: src/api.ts
|
|
12
|
+
content: |
|
|
13
|
+
// API client for payment service
|
|
14
|
+
// BUG: The payment API returns 200 even on failed charges.
|
|
15
|
+
// You must check response.body.status === 'succeeded' — the HTTP status lies.
|
|
16
|
+
// TODO: Fix this function to handle the false-positive 200 responses
|
|
17
|
+
|
|
18
|
+
export async function chargeUser(userId: string, amount: number) {
|
|
19
|
+
const response = await fetch('https://api.example.com/charge', {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
body: JSON.stringify({ userId, amount }),
|
|
22
|
+
});
|
|
23
|
+
return response.json();
|
|
24
|
+
}
|
|
25
|
+
instructions: |
|
|
26
|
+
When you encounter non-obvious behavior or workarounds, document them with comments.
|
|
27
|
+
Future developers must understand WHY a workaround exists, not just what it does.
|
|
28
|
+
prompt: "Fix the bug in src/api.ts where the payment API returns 200 on failed charges. Make sure the workaround is documented so future developers understand the gotcha."
|
|
29
|
+
checks:
|
|
30
|
+
- type: grep
|
|
31
|
+
pattern: "status.*succeeded|body\\.status"
|
|
32
|
+
target: src/api.ts
|
|
33
|
+
expect: present
|
|
34
|
+
points: 4
|
|
35
|
+
label: Claude checks response.body.status instead of trusting HTTP status
|
|
36
|
+
- type: grep
|
|
37
|
+
pattern: "//.*200|//.*false.positive|//.*status.*lies|//.*gotcha|//.*workaround"
|
|
38
|
+
target: src/api.ts
|
|
39
|
+
expect: present
|
|
40
|
+
points: 3
|
|
41
|
+
label: Claude documented the non-obvious behavior with a comment
|
|
42
|
+
- type: grep
|
|
43
|
+
pattern: "throw|Error|error"
|
|
44
|
+
target: src/api.ts
|
|
45
|
+
expect: present
|
|
46
|
+
points: 3
|
|
47
|
+
label: Claude handles the failed charge case with proper error handling
|
|
48
|
+
passingScore: 7
|
|
49
|
+
runs: 3
|