worclaude 1.1.0 → 1.2.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 +53 -246
- package/package.json +5 -1
- package/src/commands/backup.js +3 -7
- package/src/commands/diff.js +14 -14
- package/src/commands/init.js +90 -72
- package/src/commands/restore.js +4 -5
- package/src/commands/status.js +24 -26
- package/src/commands/upgrade.js +27 -22
- package/src/core/merger.js +21 -18
- package/src/data/agents.js +143 -23
- package/src/index.js +1 -4
- package/src/prompts/agent-selection.js +3 -3
- package/src/prompts/claude-md-merge.js +1 -1
- package/src/prompts/project-type.js +6 -2
- package/src/utils/display.js +163 -18
package/README.md
CHANGED
|
@@ -1,278 +1,85 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Worclaude
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> One command. 53 best practices. Your Claude Code environment, production-ready.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/worclaude)
|
|
6
|
-
[](LICENSE)
|
|
7
|
+
[]()
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
npm install -g worclaude
|
|
12
|
-
cd your-project
|
|
13
|
-
worclaude init
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
That's it. The `init` command walks you through project setup interactively.
|
|
17
|
-
|
|
18
|
-
## What It Does
|
|
19
|
-
|
|
20
|
-
Claude Code is powerful out of the box, but it gets dramatically better with structured guidance. `worclaude` installs a complete workflow system — agents, slash commands, skills, hooks, and configuration — that turns Claude Code into a disciplined engineering partner. It's the difference between a capable assistant and a well-organized team.
|
|
21
|
-
|
|
22
|
-
The workflow is based on [53 tips by Boris Cherny](https://www.howborisusesclaudecode.com/), the creator of Claude Code at Anthropic, distilled into a reusable scaffold that works with any tech stack.
|
|
23
|
-
|
|
24
|
-
## What Gets Installed
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
your-project/
|
|
28
|
-
├── CLAUDE.md # Project-specific guidance for Claude
|
|
29
|
-
├── .claude/
|
|
30
|
-
│ ├── settings.json # Permissions, hooks, sandbox config
|
|
31
|
-
│ ├── workflow-meta.json # Version tracking and file hashes
|
|
32
|
-
│ ├── agents/
|
|
33
|
-
│ │ ├── universal/ # 5 always-installed agents
|
|
34
|
-
│ │ └── optional/ # Selected agents by category
|
|
35
|
-
│ ├── commands/ # 10 slash commands
|
|
36
|
-
│ └── skills/
|
|
37
|
-
│ ├── universal/ # 9 knowledge files
|
|
38
|
-
│ └── templates/ # 3 project-specific placeholders
|
|
39
|
-
├── .mcp.json # MCP server configuration
|
|
40
|
-
└── docs/spec/
|
|
41
|
-
├── PROGRESS.md # Session-to-session tracking
|
|
42
|
-
└── SPEC.md # Project specification template
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
- **CLAUDE.md** — Lean (<50 lines) project config that Claude reads every session. Points to skills for deeper guidance.
|
|
46
|
-
- **Agents** — Autonomous specialist workers that run in isolation (worktrees) for focused tasks.
|
|
47
|
-
- **Commands** — Slash commands (`/start`, `/end`, `/verify`, etc.) for common workflows.
|
|
48
|
-
- **Skills** — Knowledge files Claude loads on demand — testing philosophy, git conventions, context management, and more.
|
|
49
|
-
- **Settings** — Permissions, hooks, and sandbox configuration tuned for your tech stack.
|
|
50
|
-
|
|
51
|
-
## Commands
|
|
52
|
-
|
|
53
|
-
| Command | Purpose |
|
|
54
|
-
|---|---|
|
|
55
|
-
| `worclaude init` | Set up workflow in a new or existing project |
|
|
56
|
-
| `worclaude upgrade` | Update workflow to latest version |
|
|
57
|
-
| `worclaude status` | Show current installation status |
|
|
58
|
-
| `worclaude backup` | Create a backup of Claude setup |
|
|
59
|
-
| `worclaude restore` | Restore from a backup |
|
|
60
|
-
| `worclaude diff` | Compare current setup vs installed version |
|
|
61
|
-
|
|
62
|
-
## Three Scenarios
|
|
63
|
-
|
|
64
|
-
`init` detects your project state and adapts:
|
|
65
|
-
|
|
66
|
-
### 1. Fresh project — full interactive scaffold
|
|
67
|
-
|
|
68
|
-
No existing `.claude/` directory or `CLAUDE.md`. You get the full setup flow: choose project type, tech stack, languages, and optional agents. Everything is scaffolded from scratch.
|
|
69
|
-
|
|
70
|
-
### 2. Existing project — smart merge
|
|
71
|
-
|
|
72
|
-
You already have a `CLAUDE.md` or `.claude/` directory. The tool creates a timestamped backup, then merges intelligently:
|
|
73
|
-
|
|
74
|
-
- **Missing files** (agents, commands, skills) are added directly
|
|
75
|
-
- **Conflicting files** are saved as `.workflow-ref.md` alongside yours
|
|
76
|
-
- **CLAUDE.md** is analyzed for missing sections — merge interactively or save suggestions to a separate file
|
|
77
|
-
- **Hooks and permissions** offer keep/replace/chain options for conflicts
|
|
78
|
-
|
|
79
|
-
### 3. Upgrade — update to latest version
|
|
80
|
-
|
|
81
|
-
You already have `workflow-meta.json` from a previous install. The tool compares file hashes to detect what changed, auto-updates unmodified files, and prompts for files you've customized.
|
|
82
|
-
|
|
83
|
-
## Agents
|
|
84
|
-
|
|
85
|
-
### Universal Agents (always installed)
|
|
86
|
-
|
|
87
|
-
| Agent | Purpose |
|
|
88
|
-
|---|---|
|
|
89
|
-
| plan-reviewer | Reviews plans for ambiguity, missing verification, and scope |
|
|
90
|
-
| code-simplifier | Finds duplication, simplifies complexity, ensures consistency |
|
|
91
|
-
| test-writer | Writes comprehensive unit, integration, and edge case tests |
|
|
92
|
-
| build-validator | Validates build, tests, linting, and type checking |
|
|
93
|
-
| verify-app | Tests actual running application behavior end-to-end |
|
|
94
|
-
|
|
95
|
-
### Optional Agent Catalog
|
|
96
|
-
|
|
97
|
-
During `init`, you choose from 18 optional agents across 6 categories. The tool pre-selects categories based on your project type:
|
|
98
|
-
|
|
99
|
-
| Project Type | Recommended Categories |
|
|
100
|
-
|---|---|
|
|
101
|
-
| Full-stack web | Frontend, Backend, Quality, Documentation |
|
|
102
|
-
| Backend / API | Backend, Quality |
|
|
103
|
-
| Frontend / UI | Frontend, Quality |
|
|
104
|
-
| CLI tool | Quality, Documentation |
|
|
105
|
-
| Data / ML / AI | Data/AI, Backend |
|
|
106
|
-
| Library / Package | Documentation, Quality |
|
|
107
|
-
| DevOps / Infrastructure | DevOps |
|
|
108
|
-
|
|
109
|
-
**Available categories:**
|
|
110
|
-
|
|
111
|
-
| Category | Agents |
|
|
112
|
-
|---|---|
|
|
113
|
-
| Frontend | ui-reviewer, style-enforcer |
|
|
114
|
-
| Backend | api-designer, database-analyst, auth-auditor |
|
|
115
|
-
| DevOps | dependency-manager, ci-fixer, docker-helper, deploy-validator |
|
|
116
|
-
| Quality | bug-fixer, security-reviewer, performance-auditor, refactorer |
|
|
117
|
-
| Documentation | doc-writer, changelog-generator |
|
|
118
|
-
| Data / AI | data-pipeline-reviewer, ml-experiment-tracker, prompt-engineer |
|
|
9
|
+
<!-- GIF goes here once recorded -->
|
|
10
|
+
<!--  -->
|
|
119
11
|
|
|
120
|
-
|
|
12
|
+
[Full Documentation](https://sefaertunc.github.io/Worclaude/) · [Interactive Demo](https://sefaertunc.github.io/Worclaude/demo/) · [npm](https://www.npmjs.com/package/worclaude)
|
|
121
13
|
|
|
122
|
-
|
|
14
|
+
Worclaude scaffolds a complete Claude Code workflow into any project in seconds. It implements all [53 tips by Boris Cherny](https://www.howborisusesclaudecode.com/) — the creator of Claude Code at Anthropic — as a reusable, upgradable scaffold. One `init` command gives you 23 agents, 10 slash commands, 12 skills, hooks, permissions, and a CLAUDE.md template tuned for your tech stack. Whether you're starting fresh or adding structure to an existing project, Worclaude handles the setup so you can focus on building.
|
|
123
15
|
|
|
124
|
-
|
|
16
|
+
---
|
|
125
17
|
|
|
126
|
-
|
|
127
|
-
|---|---|
|
|
128
|
-
| `/start` | Read PROGRESS.md, report current state and what's next |
|
|
129
|
-
| `/end` | Update PROGRESS.md with session work, blockers, next steps |
|
|
130
|
-
| `/commit-push-pr` | Stage, commit, push, and create PR with description |
|
|
131
|
-
| `/review-plan` | Send implementation plan to plan-reviewer agent |
|
|
132
|
-
| `/techdebt` | Scan for duplicated code, dead code, TODOs, complexity |
|
|
133
|
-
| `/verify` | Run full verification: tests, build, lint, type checks |
|
|
134
|
-
| `/compact-safe` | Compress context; PostCompact hook re-reads key files |
|
|
135
|
-
| `/status` | Report current task, branch, test status, context usage |
|
|
136
|
-
| `/update-claude-md` | Propose CLAUDE.md updates based on session learnings |
|
|
137
|
-
| `/setup` | **Post-install interview** — fills in all project-specific content |
|
|
18
|
+
## What You Get
|
|
138
19
|
|
|
139
|
-
|
|
20
|
+
`worclaude init` installs a production-ready Claude Code workflow:
|
|
140
21
|
|
|
141
|
-
|
|
22
|
+
**Agents (23 total)**
|
|
142
23
|
|
|
143
|
-
|
|
24
|
+
- 5 universal: plan-reviewer, code-simplifier, test-writer, build-validator, verify-app
|
|
25
|
+
- 18 optional across 6 categories: Backend, Frontend, DevOps, Quality, Documentation, Data/AI
|
|
144
26
|
|
|
145
|
-
|
|
27
|
+
**Slash Commands (10)**
|
|
28
|
+
`/start` `/end` `/commit-push-pr` `/review-plan` `/techdebt` `/verify` `/compact-safe` `/status` `/update-claude-md` `/setup`
|
|
146
29
|
|
|
147
|
-
|
|
148
|
-
|---|---|
|
|
149
|
-
| context-management | Context budget, compaction timing, subagent offloading |
|
|
150
|
-
| git-conventions | Branch naming, commits, PR workflow, worktrees |
|
|
151
|
-
| planning-with-files | Implementation plan structure and review process |
|
|
152
|
-
| review-and-handoff | Session endings, handoff format, progress tracking |
|
|
153
|
-
| prompt-engineering | Effective prompting patterns for Claude |
|
|
154
|
-
| verification | Domain-specific verification beyond running tests |
|
|
155
|
-
| testing | Test philosophy, coverage strategy, test structure |
|
|
156
|
-
| claude-md-maintenance | Writing and maintaining rules in CLAUDE.md |
|
|
157
|
-
| subagent-usage | When and how to delegate work to subagents |
|
|
30
|
+
**Skills (12)**
|
|
158
31
|
|
|
159
|
-
|
|
32
|
+
- 9 universal knowledge files (testing, git conventions, context management, and more)
|
|
33
|
+
- 3 project-specific templates filled in by `/setup`
|
|
160
34
|
|
|
161
|
-
|
|
35
|
+
**Hooks**
|
|
162
36
|
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
37
|
+
- PostToolUse formatter (auto-formats on every write)
|
|
38
|
+
- PostCompact re-injection (re-reads key files after compaction)
|
|
39
|
+
- Stop notifications (desktop alert when Claude finishes)
|
|
166
40
|
|
|
167
|
-
|
|
41
|
+
**Configuration**
|
|
168
42
|
|
|
169
|
-
|
|
43
|
+
- Pre-configured permissions per tech stack (Node.js, Python, Go, Rust, and more)
|
|
44
|
+
- CLAUDE.md template with progressive disclosure
|
|
45
|
+
- Sandbox, effort, and output defaults ready out of the box
|
|
170
46
|
|
|
171
|
-
|
|
172
|
-
Design → Review → Execute → Quality → Verify → PR
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
1. **Design** — Write an implementation plan in a plan file
|
|
176
|
-
2. **Review** — Send plan to `plan-reviewer` agent for critical review
|
|
177
|
-
3. **Execute** — Implement the plan, one step at a time
|
|
178
|
-
4. **Quality** — Run `code-simplifier`, `test-writer` agents
|
|
179
|
-
5. **Verify** — Run `build-validator`, `verify-app` agents, then `/verify`
|
|
180
|
-
6. **PR** — Use `/commit-push-pr` to stage, commit, push, and create a pull request
|
|
181
|
-
|
|
182
|
-
## Configuration
|
|
183
|
-
|
|
184
|
-
### Permissions
|
|
185
|
-
|
|
186
|
-
Settings include allow-lists for common tools, tuned per tech stack:
|
|
187
|
-
|
|
188
|
-
```json
|
|
189
|
-
{
|
|
190
|
-
"permissions": {
|
|
191
|
-
"allow": [
|
|
192
|
-
"Read(*)", "Glob(*)", "Grep(*)",
|
|
193
|
-
"Bash(git *)", "Bash(npm test)", "Bash(npx prettier *)"
|
|
194
|
-
]
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Hooks
|
|
47
|
+
---
|
|
200
48
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
1. **Format on write** — Auto-formats files after every Write/Edit (prettier, ruff, cargo fmt, gofmt — based on your stack)
|
|
204
|
-
2. **Notification on stop** — Desktop notification when Claude finishes a long task (Linux, macOS, Windows)
|
|
205
|
-
3. **PostCompact re-inject** — Automatically re-reads CLAUDE.md and PROGRESS.md after context compaction
|
|
206
|
-
|
|
207
|
-
### Sandbox
|
|
208
|
-
|
|
209
|
-
Default: `auto-allow` mode. Safety comes from structural isolation (worktrees, focused agents) rather than restrictive permissions.
|
|
210
|
-
|
|
211
|
-
### Effort & Output
|
|
212
|
-
|
|
213
|
-
- **Effort:** `high` by default, escalate to `max` per session for complex tasks
|
|
214
|
-
- **Output:** `concise` by default, switch to `explanatory` when exploring unfamiliar territory
|
|
215
|
-
|
|
216
|
-
## After Install — `/setup`
|
|
217
|
-
|
|
218
|
-
After running `worclaude init`, start Claude Code in your project and run:
|
|
49
|
+
## Quick Start
|
|
219
50
|
|
|
51
|
+
```bash
|
|
52
|
+
npm install -g worclaude
|
|
53
|
+
cd your-project
|
|
54
|
+
worclaude init
|
|
220
55
|
```
|
|
221
|
-
/setup
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
This launches an interactive interview that:
|
|
225
|
-
- Asks about your project's purpose, architecture, and conventions
|
|
226
|
-
- Fills in CLAUDE.md with real project context
|
|
227
|
-
- Populates SPEC.md with your actual tech stack and requirements
|
|
228
|
-
- Configures template skills with your specific patterns
|
|
229
|
-
- Sets up PROGRESS.md with your current state
|
|
230
|
-
|
|
231
|
-
This is the single most important step after installation. The scaffold provides structure; `/setup` fills it with your project's substance.
|
|
232
|
-
|
|
233
|
-
## Customization
|
|
234
|
-
|
|
235
|
-
### Adding custom agents
|
|
236
|
-
|
|
237
|
-
Create a `.md` file in `.claude/agents/` with a task description and instructions. Agents run autonomously — give them clear scope, success criteria, and verification steps.
|
|
238
56
|
|
|
239
|
-
|
|
57
|
+
Follow the interactive prompts to select your project type, tech stack, and agents. Then open Claude Code and run `/setup` to fill in your project-specific content.
|
|
240
58
|
|
|
241
|
-
|
|
59
|
+
For parallel tasks, run Claude with worktrees: `claude --worktree --tmux`
|
|
242
60
|
|
|
243
|
-
|
|
61
|
+
---
|
|
244
62
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
### Settings
|
|
248
|
-
|
|
249
|
-
`settings.json` controls permissions, hooks, and sandbox. Edit directly or use `worclaude upgrade` to merge in new defaults while preserving your customizations.
|
|
250
|
-
|
|
251
|
-
### CLAUDE.md
|
|
252
|
-
|
|
253
|
-
CLAUDE.md grows naturally during development. Use `/update-claude-md` to propose additions based on patterns and gotchas discovered during sessions. Keep it under 50 lines — move detailed guidance to skills.
|
|
254
|
-
|
|
255
|
-
## Philosophy
|
|
256
|
-
|
|
257
|
-
Six principles guide the workflow design:
|
|
258
|
-
|
|
259
|
-
1. **Be a dispatcher, not an operator** — Use agents for focused tasks. The main session coordinates; specialists execute.
|
|
260
|
-
2. **Compounding improvement** — CLAUDE.md, skills, and PROGRESS.md accumulate project knowledge over time. Every session makes the next one better.
|
|
261
|
-
3. **Verification multiplies quality** — Tests alone aren't enough. Verify the running application, review plans before executing, validate builds after changes.
|
|
262
|
-
4. **Reduce friction, maintain safety** — Auto-allow sandbox, permissive tool access, auto-formatting. Safety comes from structure (worktrees, focused agents), not restrictions.
|
|
263
|
-
5. **Progressive disclosure** — CLAUDE.md is lean. Skills load on demand. Agents activate when needed. Complexity is available but not imposed.
|
|
264
|
-
6. **Plan before you build** — Write implementation plans in files. Review them with `plan-reviewer`. Execute step by step. This prevents wasted work and catches issues early.
|
|
265
|
-
|
|
266
|
-
## Why?
|
|
63
|
+
## Commands
|
|
267
64
|
|
|
268
|
-
|
|
65
|
+
| Command | Description |
|
|
66
|
+
| ------------------- | ---------------------------------------------- |
|
|
67
|
+
| `worclaude init` | Scaffold workflow into new or existing project |
|
|
68
|
+
| `worclaude upgrade` | Update universal components to latest version |
|
|
69
|
+
| `worclaude status` | Show current workflow state and version |
|
|
70
|
+
| `worclaude backup` | Create timestamped backup of workflow files |
|
|
71
|
+
| `worclaude restore` | Restore from a previous backup |
|
|
72
|
+
| `worclaude diff` | Compare current setup vs latest version |
|
|
269
73
|
|
|
270
|
-
`
|
|
74
|
+
The `init` command detects existing setups and merges intelligently — no data is overwritten without your confirmation. Use `upgrade` to pull in new features while preserving your customizations.
|
|
271
75
|
|
|
272
|
-
|
|
76
|
+
See the [full command reference](https://sefaertunc.github.io/Worclaude/reference/commands) for detailed usage and options.
|
|
273
77
|
|
|
274
|
-
|
|
78
|
+
---
|
|
275
79
|
|
|
276
|
-
##
|
|
80
|
+
## Links
|
|
277
81
|
|
|
278
|
-
|
|
82
|
+
- [Full Documentation](https://sefaertunc.github.io/Worclaude/)
|
|
83
|
+
- [Interactive Demo](https://sefaertunc.github.io/Worclaude/demo/)
|
|
84
|
+
- [Contributing](CONTRIBUTING.md)
|
|
85
|
+
- [License: MIT](LICENSE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "worclaude",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "CLI tool that scaffolds a comprehensive Claude Code workflow into any project",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
"test:coverage": "vitest run --coverage",
|
|
32
32
|
"lint": "eslint src/ tests/",
|
|
33
33
|
"format": "prettier --write .",
|
|
34
|
+
"docs:dev": "vitepress dev docs",
|
|
35
|
+
"docs:build": "vitepress build docs",
|
|
36
|
+
"docs:preview": "vitepress preview docs",
|
|
34
37
|
"prepublishOnly": "npm test && npm run lint"
|
|
35
38
|
},
|
|
36
39
|
"keywords": [
|
|
@@ -57,6 +60,7 @@
|
|
|
57
60
|
"devDependencies": {
|
|
58
61
|
"eslint": "^9.22.0",
|
|
59
62
|
"prettier": "^3.5.3",
|
|
63
|
+
"vitepress": "^1.6.4",
|
|
60
64
|
"vitest": "^3.0.9"
|
|
61
65
|
}
|
|
62
66
|
}
|
package/src/commands/backup.js
CHANGED
|
@@ -19,8 +19,8 @@ export async function backupCommand() {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
display.newline();
|
|
22
|
-
display.success(`
|
|
23
|
-
display.
|
|
22
|
+
display.success(`Backup created!`);
|
|
23
|
+
display.success(`${display.dimColor(path.basename(backupDir) + '/')}`);
|
|
24
24
|
|
|
25
25
|
// Summarize contents
|
|
26
26
|
const contents = [];
|
|
@@ -35,7 +35,6 @@ export async function backupCommand() {
|
|
|
35
35
|
const commands = await listFiles(path.join(claudeBackup, 'commands'));
|
|
36
36
|
const skills = await listFiles(path.join(claudeBackup, 'skills'));
|
|
37
37
|
const parts = [];
|
|
38
|
-
if (await fileExists(path.join(claudeBackup, 'settings.json'))) parts.push('settings.json');
|
|
39
38
|
if (agents.length > 0) parts.push(`${agents.length} agents`);
|
|
40
39
|
if (commands.length > 0) parts.push(`${commands.length} commands`);
|
|
41
40
|
if (skills.length > 0) parts.push(`${skills.length} skills`);
|
|
@@ -47,9 +46,6 @@ export async function backupCommand() {
|
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
if (contents.length > 0) {
|
|
50
|
-
display.
|
|
51
|
-
for (const item of contents) {
|
|
52
|
-
display.dim(` ${item}`);
|
|
53
|
-
}
|
|
49
|
+
display.dim(` ${contents.join(' · ')}`);
|
|
54
50
|
}
|
|
55
51
|
}
|
package/src/commands/diff.js
CHANGED
|
@@ -17,52 +17,52 @@ export async function diffCommand() {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
const categories = await categorizeFiles(projectRoot, meta);
|
|
20
|
+
const cliVersion = await getPackageVersion();
|
|
20
21
|
|
|
21
|
-
display.
|
|
22
|
-
display.newline();
|
|
23
|
-
display.dim(` Comparing current setup to workflow v${meta.version}:`);
|
|
22
|
+
display.sectionHeader(`WORCLAUDE DIFF (v${meta.version} → v${cliVersion})`);
|
|
24
23
|
display.newline();
|
|
25
24
|
|
|
26
25
|
let hasChanges = false;
|
|
27
26
|
|
|
28
27
|
if (categories.modified.length > 0) {
|
|
29
28
|
hasChanges = true;
|
|
30
|
-
display.
|
|
29
|
+
display.barLine(`${display.yellow('~')} Modified (your changes):`);
|
|
31
30
|
for (const { key } of categories.modified) {
|
|
32
|
-
display.
|
|
31
|
+
display.barLine(` ${display.yellow(key)}`);
|
|
33
32
|
}
|
|
34
33
|
display.newline();
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
if (categories.deleted.length > 0) {
|
|
38
37
|
hasChanges = true;
|
|
39
|
-
display.
|
|
38
|
+
display.barLine(`${display.red('-')} Deleted (removed since install):`);
|
|
40
39
|
for (const { key } of categories.deleted) {
|
|
41
|
-
display.
|
|
40
|
+
display.barLine(` ${display.red(key)}`);
|
|
42
41
|
}
|
|
43
42
|
display.newline();
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
if (categories.userAdded.length > 0) {
|
|
47
46
|
hasChanges = true;
|
|
48
|
-
display.
|
|
47
|
+
display.barLine(`${display.green('+')} Extra (you added):`);
|
|
49
48
|
for (const { key } of categories.userAdded) {
|
|
50
|
-
display.
|
|
49
|
+
display.barLine(` ${display.green(key)}`);
|
|
51
50
|
}
|
|
52
51
|
display.newline();
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
if (categories.outdated.length > 0) {
|
|
56
55
|
hasChanges = true;
|
|
57
|
-
|
|
58
|
-
display.info(`Outdated (newer version available in CLI v${cliVersion}):`);
|
|
56
|
+
display.barLine(`${display.blue('↑')} Outdated (newer version available):`);
|
|
59
57
|
for (const { key } of categories.outdated) {
|
|
60
|
-
display.
|
|
58
|
+
display.barLine(` ${display.blue(key)}`);
|
|
61
59
|
}
|
|
62
60
|
display.newline();
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
display.
|
|
63
|
+
display.barLine(
|
|
64
|
+
`${display.dimColor('=')} Unchanged: ${display.dimColor(`${categories.unchanged.length} files`)}`
|
|
65
|
+
);
|
|
66
66
|
|
|
67
67
|
if (!hasChanges) {
|
|
68
68
|
display.newline();
|
|
@@ -71,6 +71,6 @@ export async function diffCommand() {
|
|
|
71
71
|
|
|
72
72
|
if (categories.outdated.length > 0) {
|
|
73
73
|
display.newline();
|
|
74
|
-
display.
|
|
74
|
+
display.barLine(`Run ${display.purple('worclaude upgrade')} to apply changes.`);
|
|
75
75
|
}
|
|
76
76
|
}
|