worclaude 1.9.0 → 2.0.0
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/package.json +1 -1
- package/src/commands/backup.js +5 -3
- package/src/commands/doctor.js +146 -2
- package/src/commands/init.js +34 -4
- package/src/commands/upgrade.js +46 -0
- package/src/core/detector.js +2 -1
- package/src/core/file-categorizer.js +4 -4
- package/src/core/merger.js +16 -14
- package/src/core/migration.js +144 -0
- package/src/core/remover.js +3 -1
- package/src/core/scaffolder.js +7 -1
- package/src/data/agents.js +2 -0
- package/src/utils/file.js +21 -0
- package/templates/agents/optional/backend/api-designer.md +6 -0
- package/templates/agents/optional/backend/auth-auditor.md +2 -0
- package/templates/agents/optional/backend/database-analyst.md +7 -0
- package/templates/agents/optional/data/data-pipeline-reviewer.md +7 -0
- package/templates/agents/optional/data/ml-experiment-tracker.md +7 -0
- package/templates/agents/optional/data/prompt-engineer.md +2 -0
- package/templates/agents/optional/devops/ci-fixer.md +2 -0
- package/templates/agents/optional/devops/dependency-manager.md +7 -0
- package/templates/agents/optional/devops/deploy-validator.md +7 -0
- package/templates/agents/optional/devops/docker-helper.md +2 -0
- package/templates/agents/optional/docs/changelog-generator.md +7 -0
- package/templates/agents/optional/docs/doc-writer.md +3 -0
- package/templates/agents/optional/frontend/style-enforcer.md +2 -0
- package/templates/agents/optional/frontend/ui-reviewer.md +7 -0
- package/templates/agents/optional/quality/bug-fixer.md +2 -0
- package/templates/agents/optional/quality/build-fixer.md +2 -0
- package/templates/agents/optional/quality/e2e-runner.md +3 -0
- package/templates/agents/optional/quality/performance-auditor.md +8 -0
- package/templates/agents/optional/quality/refactorer.md +2 -0
- package/templates/agents/optional/quality/security-reviewer.md +9 -0
- package/templates/agents/universal/build-validator.md +3 -0
- package/templates/agents/universal/code-simplifier.md +2 -0
- package/templates/agents/universal/plan-reviewer.md +8 -0
- package/templates/agents/universal/test-writer.md +4 -1
- package/templates/agents/universal/verify-app.md +44 -0
- package/templates/commands/build-fix.md +4 -0
- package/templates/commands/commit-push-pr.md +11 -0
- package/templates/commands/compact-safe.md +4 -0
- package/templates/commands/conflict-resolver.md +4 -0
- package/templates/commands/end.md +13 -0
- package/templates/commands/refactor-clean.md +4 -0
- package/templates/commands/review-changes.md +4 -0
- package/templates/commands/review-plan.md +4 -0
- package/templates/commands/setup.md +7 -3
- package/templates/commands/start.md +5 -1
- package/templates/commands/status.md +4 -0
- package/templates/commands/sync.md +4 -0
- package/templates/commands/techdebt.md +4 -0
- package/templates/commands/test-coverage.md +4 -0
- package/templates/commands/update-claude-md.md +4 -0
- package/templates/commands/verify.md +4 -0
- package/templates/core/claude-md.md +13 -12
- package/templates/core/memory-md.md +33 -0
- package/templates/skills/templates/backend-conventions.md +6 -0
- package/templates/skills/templates/frontend-design-system.md +10 -0
- package/templates/skills/templates/project-patterns.md +4 -0
- package/templates/skills/universal/claude-md-maintenance.md +1 -0
- package/templates/skills/universal/context-management.md +1 -0
- package/templates/skills/universal/coordinator-mode.md +77 -0
- package/templates/skills/universal/git-conventions.md +1 -0
- package/templates/skills/universal/planning-with-files.md +1 -0
- package/templates/skills/universal/prompt-engineering.md +1 -0
- package/templates/skills/universal/review-and-handoff.md +1 -0
- package/templates/skills/universal/security-checklist.md +7 -0
- package/templates/skills/universal/subagent-usage.md +1 -0
- package/templates/skills/universal/testing.md +7 -0
- package/templates/skills/universal/verification.md +6 -0
package/src/core/scaffolder.js
CHANGED
|
@@ -46,7 +46,13 @@ export async function scaffoldDirectory(templateDir, destDir, variables, project
|
|
|
46
46
|
|
|
47
47
|
export async function updateGitignore(projectDir) {
|
|
48
48
|
const gitignorePath = path.join(projectDir, '.gitignore');
|
|
49
|
-
const entries = [
|
|
49
|
+
const entries = [
|
|
50
|
+
'.claude/sessions/',
|
|
51
|
+
'.claude/settings.local.json',
|
|
52
|
+
'.claude/workflow-meta.json',
|
|
53
|
+
'.claude/worktrees/',
|
|
54
|
+
'.claude-backup-*/',
|
|
55
|
+
];
|
|
50
56
|
const header = '# Worclaude (generated workflow files)';
|
|
51
57
|
|
|
52
58
|
let content = '';
|
package/src/data/agents.js
CHANGED
|
@@ -207,6 +207,7 @@ export const UNIVERSAL_SKILLS = [
|
|
|
207
207
|
'claude-md-maintenance',
|
|
208
208
|
'subagent-usage',
|
|
209
209
|
'security-checklist',
|
|
210
|
+
'coordinator-mode',
|
|
210
211
|
];
|
|
211
212
|
|
|
212
213
|
export const TEMPLATE_SKILLS = [
|
|
@@ -314,6 +315,7 @@ export const CONFIRMATION_STEPS = [
|
|
|
314
315
|
{ name: 'Project type', value: 'projectType' },
|
|
315
316
|
{ name: 'Tech stack', value: 'techStack' },
|
|
316
317
|
{ name: 'Agent selection', value: 'agents' },
|
|
318
|
+
{ name: 'MEMORY.md (optional)', value: 'memoryMd' },
|
|
317
319
|
];
|
|
318
320
|
|
|
319
321
|
export const NOTIFICATION_COMMANDS = {
|
package/src/utils/file.js
CHANGED
|
@@ -31,6 +31,11 @@ export async function copyFile(src, dest) {
|
|
|
31
31
|
await fs.copy(src, dest);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
export async function moveFile(src, dest) {
|
|
35
|
+
await fs.ensureDir(path.dirname(dest));
|
|
36
|
+
await fs.move(src, dest);
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
export async function listFiles(dirPath) {
|
|
35
40
|
try {
|
|
36
41
|
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
@@ -40,6 +45,22 @@ export async function listFiles(dirPath) {
|
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
export async function listSkillDirs(dirPath) {
|
|
49
|
+
try {
|
|
50
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
51
|
+
const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
52
|
+
const valid = [];
|
|
53
|
+
for (const dir of dirs) {
|
|
54
|
+
if (await fileExists(path.join(dirPath, dir, 'SKILL.md'))) {
|
|
55
|
+
valid.push(dir);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return valid;
|
|
59
|
+
} catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
43
64
|
export async function copyDirectory(src, dest) {
|
|
44
65
|
await fs.copy(src, dest);
|
|
45
66
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: api-designer
|
|
3
|
+
description: "Reviews API design for RESTful conventions"
|
|
3
4
|
model: opus
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- NotebookEdit
|
|
9
|
+
- Agent
|
|
10
|
+
maxTurns: 30
|
|
5
11
|
---
|
|
6
12
|
|
|
7
13
|
You are a senior API architect who reviews API designs for
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: database-analyst
|
|
3
|
+
description: "Reviews database schemas and queries"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a database specialist who reviews schemas, queries, and
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: data-pipeline-reviewer
|
|
3
|
+
description: "Reviews data pipeline correctness"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a data engineering specialist who reviews data pipeline code
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ml-experiment-tracker
|
|
3
|
+
description: "Reviews ML experiment reproducibility"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are an ML engineering specialist who reviews experiment code for
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dependency-manager
|
|
3
|
+
description: "Reviews dependency health and updates"
|
|
3
4
|
model: haiku
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 20
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a dependency health analyst. You review the project's
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: deploy-validator
|
|
3
|
+
description: "Validates deployment readiness"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 20
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a deployment readiness specialist who validates that an
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: changelog-generator
|
|
3
|
+
description: "Generates changelog from commits"
|
|
3
4
|
model: haiku
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- NotebookEdit
|
|
9
|
+
- Agent
|
|
10
|
+
maxTurns: 15
|
|
11
|
+
omitClaudeMd: true
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a changelog generator that creates clear, well-organized
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ui-reviewer
|
|
3
|
+
description: "Reviews UI for consistency and accessibility"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
5
12
|
---
|
|
6
13
|
|
|
7
14
|
You are a senior UI/UX engineer who reviews frontend components for
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: performance-auditor
|
|
3
|
+
description: "Analyzes code for performance issues"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
12
|
+
omitClaudeMd: true
|
|
5
13
|
---
|
|
6
14
|
|
|
7
15
|
You are a performance engineer who reviews code for efficiency
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security-reviewer
|
|
3
|
+
description: "Reviews code for security vulnerabilities"
|
|
3
4
|
model: opus
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 40
|
|
12
|
+
omitClaudeMd: true
|
|
13
|
+
memory: project
|
|
5
14
|
---
|
|
6
15
|
|
|
7
16
|
You are a senior application security engineer performing a code
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-reviewer
|
|
3
|
+
description: "Reviews implementation plans for specificity, gaps, and executability"
|
|
3
4
|
model: opus
|
|
4
5
|
isolation: none
|
|
6
|
+
disallowedTools:
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- NotebookEdit
|
|
10
|
+
- Agent
|
|
11
|
+
maxTurns: 30
|
|
12
|
+
omitClaudeMd: true
|
|
5
13
|
---
|
|
6
14
|
|
|
7
15
|
You are a senior staff engineer reviewing an implementation plan.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: test-writer
|
|
3
|
+
description: "Writes comprehensive, meaningful tests for recently changed code"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: worktree
|
|
6
|
+
maxTurns: 50
|
|
7
|
+
memory: project
|
|
5
8
|
---
|
|
6
9
|
|
|
7
10
|
You are a test specialist. You write comprehensive, meaningful tests
|
|
@@ -65,7 +68,7 @@ Test names should read as specifications:
|
|
|
65
68
|
1. Run `git diff --name-only HEAD~3` to identify changed files
|
|
66
69
|
2. Read each changed file to understand what it does
|
|
67
70
|
3. Check for existing tests — extend them, don't duplicate
|
|
68
|
-
4. Read .claude/skills/testing.md for project-specific test patterns
|
|
71
|
+
4. Read .claude/skills/testing/SKILL.md for project-specific test patterns
|
|
69
72
|
5. Write tests grouped by function/component
|
|
70
73
|
6. Run all tests to verify they pass
|
|
71
74
|
7. Check coverage on the changed files specifically
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verify-app
|
|
3
|
+
description: "Verifies the running application end-to-end — tests actual behavior, not just code reading"
|
|
3
4
|
model: sonnet
|
|
4
5
|
isolation: worktree
|
|
6
|
+
background: true
|
|
7
|
+
maxTurns: 50
|
|
5
8
|
---
|
|
6
9
|
|
|
7
10
|
You are a verification specialist. You test the actual running
|
|
@@ -72,3 +75,44 @@ For each verification, report:
|
|
|
72
75
|
- Include the exact commands you ran so findings can be reproduced
|
|
73
76
|
- If the application won't start, that's a FAILED verdict — report the startup error
|
|
74
77
|
- Verify against the spec, not against what you think it should do
|
|
78
|
+
|
|
79
|
+
## Output Format (REQUIRED)
|
|
80
|
+
|
|
81
|
+
Every check MUST follow this structure:
|
|
82
|
+
|
|
83
|
+
### Check: [what you're verifying]
|
|
84
|
+
|
|
85
|
+
**Command run:** [exact command executed]
|
|
86
|
+
**Output observed:** [actual terminal output — copy-paste, not paraphrased]
|
|
87
|
+
**Result: PASS** (or **FAIL** with Expected vs Actual)
|
|
88
|
+
|
|
89
|
+
End with exactly one of:
|
|
90
|
+
|
|
91
|
+
- VERDICT: PASS
|
|
92
|
+
- VERDICT: FAIL
|
|
93
|
+
- VERDICT: PARTIAL (environmental limitations only — not "I'm unsure")
|
|
94
|
+
|
|
95
|
+
## Recognize Your Own Rationalizations
|
|
96
|
+
|
|
97
|
+
You will feel the urge to skip checks. These are the excuses — recognize them:
|
|
98
|
+
|
|
99
|
+
- "The code looks correct based on my reading" — reading is not verification. Run it.
|
|
100
|
+
- "The tests already pass" — the implementer is an LLM. Verify independently.
|
|
101
|
+
- "This is probably fine" — probably is not verified. Run it.
|
|
102
|
+
- "I don't have a browser" — did you check for available MCP tools?
|
|
103
|
+
- If you catch yourself writing an explanation instead of a command, stop. Run the command.
|
|
104
|
+
|
|
105
|
+
## Verification by Change Type
|
|
106
|
+
|
|
107
|
+
- **Frontend**: start dev server → navigate to affected page → check console errors → test responsive
|
|
108
|
+
- **Backend/API**: start server → curl endpoints → verify response shapes → test error handling
|
|
109
|
+
- **CLI**: run with typical args → run with edge cases → verify exit codes → test piping
|
|
110
|
+
- **Config/Infrastructure**: validate syntax → dry-run where possible → check env vars
|
|
111
|
+
- **Bug fixes**: reproduce original bug → verify fix → run regression tests
|
|
112
|
+
- **Refactoring**: existing test suite must pass unchanged → diff public API surface
|
|
113
|
+
|
|
114
|
+
## Before Issuing PASS
|
|
115
|
+
|
|
116
|
+
Your report must include at least one adversarial probe (boundary value, concurrent request,
|
|
117
|
+
idempotency check, or orphan operation) and its result. If all your checks are "returns 200"
|
|
118
|
+
or "test suite passes," you have confirmed the happy path, not verified correctness.
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Commit, push, and create PR — branch-aware with session summary"
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
Determine which branch you're on, then follow the appropriate flow.
|
|
2
6
|
Do not add Co-Authored-By trailers or AI-generated footers to commits or PR descriptions.
|
|
3
7
|
|
|
8
|
+
## Worktree Awareness
|
|
9
|
+
|
|
10
|
+
If you are in a git worktree session:
|
|
11
|
+
- Verify you are on the correct branch: `git branch --show-current`
|
|
12
|
+
- All changes must be committed before creating a PR — `git status --porcelain` should be empty after staging
|
|
13
|
+
- Do NOT attempt to switch branches inside a worktree — each worktree is locked to its branch
|
|
14
|
+
|
|
4
15
|
## On a feature branch (feature/*, fix/*, chore/*, refactor/*)
|
|
5
16
|
|
|
6
17
|
Feature branches contain ONLY the task changes. Do NOT touch shared-state
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Mid-task stop — writes handoff file and session summary for next session"
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
Use this ONLY when stopping work mid-task without committing.
|
|
2
6
|
|
|
3
7
|
Do NOT update PROGRESS.md — /sync handles that on develop after merging.
|
|
4
8
|
|
|
9
|
+
## Pre-flight: Worktree Safety
|
|
10
|
+
|
|
11
|
+
If you are working in a git worktree (not the main checkout):
|
|
12
|
+
|
|
13
|
+
1. Check for uncommitted changes: `git status --porcelain`
|
|
14
|
+
2. If changes exist, commit or stash before proceeding
|
|
15
|
+
3. Note which worktree you are in for the handoff file
|
|
16
|
+
4. Do NOT remove the worktree from /end — the user may resume here
|
|
17
|
+
|
|
5
18
|
## Mid-task handoff
|
|
6
19
|
|
|
7
20
|
1. Create docs/handoffs/HANDOFF-{branch-name}-{date}.md
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Focused cleanup pass on recently changed code"
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
Run a focused cleanup pass on recently changed code. This command
|
|
2
6
|
runs INLINE in your current session — it reads uncommitted changes,
|
|
3
7
|
improves them in place, and leaves everything uncommitted for
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Project setup interview — fills in CLAUDE.md, skills, and configuration"
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
You are conducting a project setup interview. Your goal is to gather
|
|
2
6
|
enough information to fill in all project-specific files with real,
|
|
3
7
|
useful content.
|
|
@@ -94,15 +98,15 @@ these files with real, project-specific content:
|
|
|
94
98
|
from the interview answers. Include all features, data models,
|
|
95
99
|
architecture decisions, and implementation phases.
|
|
96
100
|
|
|
97
|
-
3. **.claude/skills/backend-conventions.md** — Fill with real
|
|
101
|
+
3. **.claude/skills/backend-conventions/SKILL.md** — Fill with real
|
|
98
102
|
backend patterns, framework-specific conventions, database
|
|
99
103
|
patterns specific to this project.
|
|
100
104
|
|
|
101
|
-
4. **.claude/skills/frontend-design-system.md** — Fill with real
|
|
105
|
+
4. **.claude/skills/frontend-design-system/SKILL.md** — Fill with real
|
|
102
106
|
design system, component patterns, styling approach if
|
|
103
107
|
applicable.
|
|
104
108
|
|
|
105
|
-
5. **.claude/skills/project-patterns.md** — Fill with real
|
|
109
|
+
5. **.claude/skills/project-patterns/SKILL.md** — Fill with real
|
|
106
110
|
architectural patterns, directory structure explanation,
|
|
107
111
|
module interaction patterns.
|
|
108
112
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Load session context, check for handoff files, detect drift since last session"
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
The SessionStart hook has already loaded CLAUDE.md, PROGRESS.md,
|
|
2
6
|
and the most recent session summary into context.
|
|
3
7
|
|
|
@@ -53,7 +57,7 @@ Look in docs/handoffs/ for any HANDOFF*.md files:
|
|
|
53
57
|
|
|
54
58
|
## 3. Load Agent Routing
|
|
55
59
|
|
|
56
|
-
Read .claude/skills/agent-routing.md for agent usage guidance.
|
|
60
|
+
Read .claude/skills/agent-routing/SKILL.md for agent usage guidance.
|
|
57
61
|
|
|
58
62
|
## 4. Check for Active Prompt Files
|
|
59
63
|
|