worclaude 1.0.0 → 1.2.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/README.md +53 -250
- package/package.json +5 -1
- package/src/commands/init.js +82 -5
- package/src/data/agents.js +24 -2
- package/templates/settings/cpp.json +16 -0
- package/templates/settings/csharp.json +12 -0
- package/templates/settings/dart.json +14 -0
- package/templates/settings/elixir.json +14 -0
- package/templates/settings/java.json +14 -0
- package/templates/settings/kotlin.json +14 -0
- package/templates/settings/php.json +15 -0
- package/templates/settings/ruby.json +16 -0
- package/templates/settings/scala.json +14 -0
- package/templates/settings/swift.json +13 -0
- package/templates/settings/zig.json +10 -0
package/README.md
CHANGED
|
@@ -1,278 +1,81 @@
|
|
|
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 |
|
|
119
|
-
|
|
120
|
-
After selecting categories, you can fine-tune by adding or removing individual agents.
|
|
121
|
-
|
|
122
|
-
## Slash Commands
|
|
9
|
+
<!-- GIF goes here once recorded -->
|
|
10
|
+
<!--  -->
|
|
123
11
|
|
|
124
|
-
|
|
12
|
+
[Full Documentation](https://sefaertunc.github.io/Worclaude/) · [Interactive Demo](https://sefaertunc.github.io/Worclaude/demo/) · [npm](https://www.npmjs.com/package/worclaude)
|
|
125
13
|
|
|
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 |
|
|
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.
|
|
138
15
|
|
|
139
|
-
|
|
16
|
+
---
|
|
140
17
|
|
|
141
|
-
##
|
|
18
|
+
## What You Get
|
|
142
19
|
|
|
143
|
-
|
|
20
|
+
`worclaude init` installs a production-ready Claude Code workflow:
|
|
144
21
|
|
|
145
|
-
|
|
22
|
+
**Agents (23 total)**
|
|
23
|
+
- 5 universal: plan-reviewer, code-simplifier, test-writer, build-validator, verify-app
|
|
24
|
+
- 18 optional across 6 categories: Backend, Frontend, DevOps, Quality, Documentation, Data/AI
|
|
146
25
|
|
|
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 |
|
|
26
|
+
**Slash Commands (10)**
|
|
27
|
+
`/start` `/end` `/commit-push-pr` `/review-plan` `/techdebt` `/verify` `/compact-safe` `/status` `/update-claude-md` `/setup`
|
|
158
28
|
|
|
159
|
-
|
|
29
|
+
**Skills (12)**
|
|
30
|
+
- 9 universal knowledge files (testing, git conventions, context management, and more)
|
|
31
|
+
- 3 project-specific templates filled in by `/setup`
|
|
160
32
|
|
|
161
|
-
|
|
33
|
+
**Hooks**
|
|
34
|
+
- PostToolUse formatter (auto-formats on every write)
|
|
35
|
+
- PostCompact re-injection (re-reads key files after compaction)
|
|
36
|
+
- Stop notifications (desktop alert when Claude finishes)
|
|
162
37
|
|
|
163
|
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
38
|
+
**Configuration**
|
|
39
|
+
- Pre-configured permissions per tech stack (Node.js, Python, Go, Rust, and more)
|
|
40
|
+
- CLAUDE.md template with progressive disclosure
|
|
41
|
+
- Sandbox, effort, and output defaults ready out of the box
|
|
166
42
|
|
|
167
|
-
|
|
43
|
+
---
|
|
168
44
|
|
|
169
|
-
|
|
170
|
-
|
|
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
|
|
200
|
-
|
|
201
|
-
Three universal hooks are installed:
|
|
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:
|
|
45
|
+
## Quick Start
|
|
219
46
|
|
|
47
|
+
```bash
|
|
48
|
+
npm install -g worclaude
|
|
49
|
+
cd your-project
|
|
50
|
+
worclaude init
|
|
220
51
|
```
|
|
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
52
|
|
|
239
|
-
|
|
53
|
+
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
54
|
|
|
241
|
-
|
|
55
|
+
For parallel tasks, run Claude with worktrees: `claude --worktree --tmux`
|
|
242
56
|
|
|
243
|
-
|
|
57
|
+
---
|
|
244
58
|
|
|
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?
|
|
59
|
+
## Commands
|
|
267
60
|
|
|
268
|
-
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---------|-------------|
|
|
63
|
+
| `worclaude init` | Scaffold workflow into new or existing project |
|
|
64
|
+
| `worclaude upgrade` | Update universal components to latest version |
|
|
65
|
+
| `worclaude status` | Show current workflow state and version |
|
|
66
|
+
| `worclaude backup` | Create timestamped backup of workflow files |
|
|
67
|
+
| `worclaude restore` | Restore from a previous backup |
|
|
68
|
+
| `worclaude diff` | Compare current setup vs latest version |
|
|
269
69
|
|
|
270
|
-
`
|
|
70
|
+
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
71
|
|
|
272
|
-
|
|
72
|
+
See the [full command reference](https://sefaertunc.github.io/Worclaude/reference/commands) for detailed usage and options.
|
|
273
73
|
|
|
274
|
-
|
|
74
|
+
---
|
|
275
75
|
|
|
276
|
-
##
|
|
76
|
+
## Links
|
|
277
77
|
|
|
278
|
-
|
|
78
|
+
- [Full Documentation](https://sefaertunc.github.io/Worclaude/)
|
|
79
|
+
- [Interactive Demo](https://sefaertunc.github.io/Worclaude/demo/)
|
|
80
|
+
- [Contributing](CONTRIBUTING.md)
|
|
81
|
+
- [License: MIT](LICENSE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "worclaude",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
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/init.js
CHANGED
|
@@ -45,12 +45,26 @@ function buildCommandsBlock(languages, useDocker) {
|
|
|
45
45
|
lines.push('npx eslint . # Lint');
|
|
46
46
|
lines.push('npx prettier --write . # Format');
|
|
47
47
|
}
|
|
48
|
-
if (languages.includes('
|
|
48
|
+
if (languages.includes('java')) {
|
|
49
49
|
if (lines.length > 1) lines.push('');
|
|
50
|
-
lines.push('#
|
|
51
|
-
lines.push('
|
|
52
|
-
lines.push('
|
|
53
|
-
lines.push('
|
|
50
|
+
lines.push('# Java');
|
|
51
|
+
lines.push('mvn test # Run tests');
|
|
52
|
+
lines.push('mvn checkstyle:check # Lint');
|
|
53
|
+
lines.push('mvn spotless:apply # Format');
|
|
54
|
+
}
|
|
55
|
+
if (languages.includes('csharp')) {
|
|
56
|
+
if (lines.length > 1) lines.push('');
|
|
57
|
+
lines.push('# C# / .NET');
|
|
58
|
+
lines.push('dotnet test # Run tests');
|
|
59
|
+
lines.push('dotnet format --verify-no-changes # Lint');
|
|
60
|
+
lines.push('dotnet format # Format');
|
|
61
|
+
}
|
|
62
|
+
if (languages.includes('cpp')) {
|
|
63
|
+
if (lines.length > 1) lines.push('');
|
|
64
|
+
lines.push('# C / C++');
|
|
65
|
+
lines.push('cmake --build build && ctest # Build & test');
|
|
66
|
+
lines.push('clang-tidy src/*.cpp # Lint');
|
|
67
|
+
lines.push('clang-format -i src/*.[ch]pp # Format');
|
|
54
68
|
}
|
|
55
69
|
if (languages.includes('go')) {
|
|
56
70
|
if (lines.length > 1) lines.push('');
|
|
@@ -59,6 +73,69 @@ function buildCommandsBlock(languages, useDocker) {
|
|
|
59
73
|
lines.push('golangci-lint run # Lint');
|
|
60
74
|
lines.push('gofmt -w . # Format');
|
|
61
75
|
}
|
|
76
|
+
if (languages.includes('php')) {
|
|
77
|
+
if (lines.length > 1) lines.push('');
|
|
78
|
+
lines.push('# PHP');
|
|
79
|
+
lines.push('vendor/bin/phpunit # Run tests');
|
|
80
|
+
lines.push('vendor/bin/phpstan analyse # Lint');
|
|
81
|
+
lines.push('vendor/bin/php-cs-fixer fix . # Format');
|
|
82
|
+
}
|
|
83
|
+
if (languages.includes('ruby')) {
|
|
84
|
+
if (lines.length > 1) lines.push('');
|
|
85
|
+
lines.push('# Ruby');
|
|
86
|
+
lines.push('bundle exec rspec # Run tests');
|
|
87
|
+
lines.push('rubocop # Lint');
|
|
88
|
+
lines.push('rubocop -A # Format');
|
|
89
|
+
}
|
|
90
|
+
if (languages.includes('kotlin')) {
|
|
91
|
+
if (lines.length > 1) lines.push('');
|
|
92
|
+
lines.push('# Kotlin');
|
|
93
|
+
lines.push('gradle test # Run tests');
|
|
94
|
+
lines.push('detekt # Lint');
|
|
95
|
+
lines.push('ktlint -F # Format');
|
|
96
|
+
}
|
|
97
|
+
if (languages.includes('swift')) {
|
|
98
|
+
if (lines.length > 1) lines.push('');
|
|
99
|
+
lines.push('# Swift');
|
|
100
|
+
lines.push('swift test # Run tests');
|
|
101
|
+
lines.push('swiftlint # Lint');
|
|
102
|
+
lines.push('swift-format format -r . -i # Format');
|
|
103
|
+
}
|
|
104
|
+
if (languages.includes('rust')) {
|
|
105
|
+
if (lines.length > 1) lines.push('');
|
|
106
|
+
lines.push('# Rust');
|
|
107
|
+
lines.push('cargo test # Run tests');
|
|
108
|
+
lines.push('cargo clippy # Lint');
|
|
109
|
+
lines.push('cargo fmt # Format');
|
|
110
|
+
}
|
|
111
|
+
if (languages.includes('dart')) {
|
|
112
|
+
if (lines.length > 1) lines.push('');
|
|
113
|
+
lines.push('# Dart / Flutter');
|
|
114
|
+
lines.push('dart test # Run tests');
|
|
115
|
+
lines.push('dart analyze # Lint');
|
|
116
|
+
lines.push('dart format . # Format');
|
|
117
|
+
}
|
|
118
|
+
if (languages.includes('scala')) {
|
|
119
|
+
if (lines.length > 1) lines.push('');
|
|
120
|
+
lines.push('# Scala');
|
|
121
|
+
lines.push('sbt test # Run tests');
|
|
122
|
+
lines.push('sbt scalafix # Lint');
|
|
123
|
+
lines.push('scalafmt # Format');
|
|
124
|
+
}
|
|
125
|
+
if (languages.includes('elixir')) {
|
|
126
|
+
if (lines.length > 1) lines.push('');
|
|
127
|
+
lines.push('# Elixir');
|
|
128
|
+
lines.push('mix test # Run tests');
|
|
129
|
+
lines.push('mix credo # Lint');
|
|
130
|
+
lines.push('mix format # Format');
|
|
131
|
+
}
|
|
132
|
+
if (languages.includes('zig')) {
|
|
133
|
+
if (lines.length > 1) lines.push('');
|
|
134
|
+
lines.push('# Zig');
|
|
135
|
+
lines.push('zig build test # Run tests');
|
|
136
|
+
lines.push('zig build # Build (lint via compiler)');
|
|
137
|
+
lines.push('zig fmt . # Format');
|
|
138
|
+
}
|
|
62
139
|
if (useDocker) {
|
|
63
140
|
if (lines.length > 1) lines.push('');
|
|
64
141
|
lines.push('# Docker');
|
package/src/data/agents.js
CHANGED
|
@@ -81,16 +81,38 @@ export const PROJECT_TYPES = [
|
|
|
81
81
|
export const TECH_STACKS = [
|
|
82
82
|
{ name: 'Python', value: 'python' },
|
|
83
83
|
{ name: 'Node.js / TypeScript', value: 'node' },
|
|
84
|
-
{ name: '
|
|
84
|
+
{ name: 'Java', value: 'java' },
|
|
85
|
+
{ name: 'C# / .NET', value: 'csharp' },
|
|
86
|
+
{ name: 'C / C++', value: 'cpp' },
|
|
85
87
|
{ name: 'Go', value: 'go' },
|
|
88
|
+
{ name: 'PHP', value: 'php' },
|
|
89
|
+
{ name: 'Ruby', value: 'ruby' },
|
|
90
|
+
{ name: 'Kotlin', value: 'kotlin' },
|
|
91
|
+
{ name: 'Swift', value: 'swift' },
|
|
92
|
+
{ name: 'Rust', value: 'rust' },
|
|
93
|
+
{ name: 'Dart / Flutter', value: 'dart' },
|
|
94
|
+
{ name: 'Scala', value: 'scala' },
|
|
95
|
+
{ name: 'Elixir', value: 'elixir' },
|
|
96
|
+
{ name: 'Zig', value: 'zig' },
|
|
86
97
|
{ name: 'Other / None', value: 'other' },
|
|
87
98
|
];
|
|
88
99
|
|
|
89
100
|
export const FORMATTER_COMMANDS = {
|
|
90
101
|
python: 'ruff format . || true',
|
|
91
102
|
node: 'npx prettier --write . || true',
|
|
92
|
-
|
|
103
|
+
java: "google-java-format -i $(find . -name '*.java' 2>/dev/null) || true",
|
|
104
|
+
csharp: 'dotnet format || true',
|
|
105
|
+
cpp: "find . -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' | xargs clang-format -i || true",
|
|
93
106
|
go: 'gofmt -w . || true',
|
|
107
|
+
php: 'php-cs-fixer fix . || true',
|
|
108
|
+
ruby: 'rubocop -A || true',
|
|
109
|
+
kotlin: 'ktlint -F || true',
|
|
110
|
+
swift: 'swift-format format -r . -i || true',
|
|
111
|
+
rust: 'cargo fmt || true',
|
|
112
|
+
dart: 'dart format . || true',
|
|
113
|
+
scala: 'scalafmt || true',
|
|
114
|
+
elixir: 'mix format || true',
|
|
115
|
+
zig: 'zig fmt . || true',
|
|
94
116
|
};
|
|
95
117
|
|
|
96
118
|
export const PROJECT_TYPE_DESCRIPTIONS = {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- C / C++ --",
|
|
5
|
+
"Bash(gcc:*)", "Bash(g++:*)", "Bash(clang:*)", "Bash(clang++:*)",
|
|
6
|
+
"Bash(make:*)", "Bash(cmake:*)", "Bash(ctest:*)", "Bash(cpack:*)",
|
|
7
|
+
"Bash(clang-format:*)", "Bash(clang-tidy:*)",
|
|
8
|
+
"Bash(valgrind:*)", "Bash(gdb:*)",
|
|
9
|
+
"Edit(*.c)", "Edit(*.cpp)", "Edit(*.cc)", "Edit(*.cxx)",
|
|
10
|
+
"Edit(*.h)", "Edit(*.hpp)", "Edit(*.hxx)",
|
|
11
|
+
"Edit(CMakeLists.txt)", "Edit(*.cmake)",
|
|
12
|
+
"Edit(Makefile)", "Edit(*.mk)"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"formatter": "find . -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' | xargs clang-format -i || true"
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- C# / .NET --",
|
|
5
|
+
"Bash(dotnet:*)", "Bash(nuget:*)",
|
|
6
|
+
"Edit(*.cs)", "Edit(*.csproj)", "Edit(*.sln)",
|
|
7
|
+
"Edit(*.props)", "Edit(*.targets)",
|
|
8
|
+
"Edit(appsettings*.json)", "Edit(launchSettings.json)"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"formatter": "dotnet format || true"
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Dart / Flutter --",
|
|
5
|
+
"Bash(dart:*)", "Bash(flutter:*)",
|
|
6
|
+
"Bash(pub:*)",
|
|
7
|
+
"Edit(*.dart)",
|
|
8
|
+
"Edit(pubspec.yaml)", "Edit(pubspec.lock)",
|
|
9
|
+
"Edit(analysis_options.yaml)",
|
|
10
|
+
"Edit(*.g.dart)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"formatter": "dart format . || true"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Elixir --",
|
|
5
|
+
"Bash(elixir:*)", "Bash(elixirc:*)", "Bash(iex:*)",
|
|
6
|
+
"Bash(mix:*)", "Bash(hex:*)",
|
|
7
|
+
"Bash(dialyzer:*)", "Bash(credo:*)",
|
|
8
|
+
"Edit(*.ex)", "Edit(*.exs)", "Edit(*.heex)", "Edit(*.leex)",
|
|
9
|
+
"Edit(mix.exs)", "Edit(mix.lock)",
|
|
10
|
+
"Edit(config/*.exs)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"formatter": "mix format || true"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Java --",
|
|
5
|
+
"Bash(java:*)", "Bash(javac:*)", "Bash(javap:*)",
|
|
6
|
+
"Bash(mvn:*)", "Bash(mvnw:*)",
|
|
7
|
+
"Bash(gradle:*)", "Bash(gradlew:*)",
|
|
8
|
+
"Bash(google-java-format:*)",
|
|
9
|
+
"Edit(*.java)", "Edit(pom.xml)", "Edit(build.gradle*)",
|
|
10
|
+
"Edit(settings.gradle*)", "Edit(gradle.properties)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"formatter": "google-java-format -i $(find . -name '*.java' 2>/dev/null) || true"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Kotlin --",
|
|
5
|
+
"Bash(kotlin:*)", "Bash(kotlinc:*)",
|
|
6
|
+
"Bash(gradle:*)", "Bash(gradlew:*)",
|
|
7
|
+
"Bash(ktlint:*)", "Bash(detekt:*)",
|
|
8
|
+
"Edit(*.kt)", "Edit(*.kts)",
|
|
9
|
+
"Edit(build.gradle*)", "Edit(settings.gradle*)",
|
|
10
|
+
"Edit(gradle.properties)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"formatter": "ktlint -F || true"
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- PHP --",
|
|
5
|
+
"Bash(php:*)", "Bash(composer:*)",
|
|
6
|
+
"Bash(phpunit:*)", "Bash(phpstan:*)",
|
|
7
|
+
"Bash(php-cs-fixer:*)", "Bash(pint:*)",
|
|
8
|
+
"Bash(artisan:*)", "Bash(sail:*)",
|
|
9
|
+
"Edit(*.php)", "Edit(composer.json)", "Edit(composer.lock)",
|
|
10
|
+
"Edit(phpunit.xml*)", "Edit(phpstan.neon*)",
|
|
11
|
+
"Edit(.php-cs-fixer*)"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"formatter": "php-cs-fixer fix . || true"
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Ruby --",
|
|
5
|
+
"Bash(ruby:*)", "Bash(irb:*)",
|
|
6
|
+
"Bash(bundle:*)", "Bash(bundler:*)",
|
|
7
|
+
"Bash(gem:*)", "Bash(rake:*)",
|
|
8
|
+
"Bash(rspec:*)", "Bash(rubocop:*)",
|
|
9
|
+
"Bash(rails:*)",
|
|
10
|
+
"Edit(*.rb)", "Edit(*.erb)", "Edit(*.rake)",
|
|
11
|
+
"Edit(Gemfile)", "Edit(Gemfile.lock)", "Edit(Rakefile)",
|
|
12
|
+
"Edit(.rubocop.yml)"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"formatter": "rubocop -A || true"
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Scala --",
|
|
5
|
+
"Bash(scala:*)", "Bash(scalac:*)",
|
|
6
|
+
"Bash(sbt:*)", "Bash(mill:*)",
|
|
7
|
+
"Bash(scalafmt:*)", "Bash(scalafix:*)",
|
|
8
|
+
"Edit(*.scala)", "Edit(*.sc)", "Edit(*.sbt)",
|
|
9
|
+
"Edit(build.sbt)", "Edit(project/*.scala)", "Edit(project/*.sbt)",
|
|
10
|
+
"Edit(.scalafmt.conf)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"formatter": "scalafmt || true"
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"// -- Swift --",
|
|
5
|
+
"Bash(swift:*)", "Bash(swiftc:*)",
|
|
6
|
+
"Bash(xcodebuild:*)", "Bash(xcrun:*)",
|
|
7
|
+
"Bash(swift-format:*)", "Bash(swiftlint:*)",
|
|
8
|
+
"Edit(*.swift)", "Edit(Package.swift)", "Edit(Package.resolved)",
|
|
9
|
+
"Edit(*.xcodeproj/**)", "Edit(*.xcworkspace/**)"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"formatter": "swift-format format -r . -i || true"
|
|
13
|
+
}
|