wormclaude 1.0.12 → 1.0.14
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/dist/cli.js +12 -1
- package/dist/cmdsec.js +306 -0
- package/dist/commands.js +26 -0
- package/dist/extensions.js +143 -0
- package/dist/injections.js +108 -0
- package/dist/theme.js +1 -1
- package/dist/tools.js +45 -4
- package/extensions/code-review/README.md +22 -0
- package/extensions/code-review/commands/review/best-practices.toml +15 -0
- package/extensions/code-review/commands/review/performance.toml +14 -0
- package/extensions/code-review/commands/review/security.toml +16 -0
- package/extensions/code-review/wormclaude-extension.json +6 -0
- package/extensions/conductor/README.md +250 -0
- package/extensions/conductor/commands/conductor/implement.toml +15 -0
- package/extensions/conductor/commands/conductor/newTrack.toml +16 -0
- package/extensions/conductor/commands/conductor/revert.toml +14 -0
- package/extensions/conductor/commands/conductor/setup.toml +16 -0
- package/extensions/conductor/commands/conductor/status.toml +15 -0
- package/extensions/conductor/templates/.wormclaudeignore +37 -0
- package/extensions/conductor/templates/code_styleguides/go.md +48 -0
- package/extensions/conductor/templates/code_styleguides/html-css.md +49 -0
- package/extensions/conductor/templates/code_styleguides/javascript.md +51 -0
- package/extensions/conductor/templates/code_styleguides/python.md +37 -0
- package/extensions/conductor/templates/code_styleguides/typescript.md +43 -0
- package/extensions/conductor/templates/general.md +23 -0
- package/extensions/conductor/templates/plan.md +18 -0
- package/extensions/conductor/templates/product-guidelines.md +25 -0
- package/extensions/conductor/templates/product.md +21 -0
- package/extensions/conductor/templates/tech-stack.md +25 -0
- package/extensions/conductor/templates/workflow.md +138 -0
- package/extensions/conductor/wormclaude-extension.json +6 -0
- package/extensions/git-helper/README.md +16 -0
- package/extensions/git-helper/commands/git/branch-cleanup.toml +13 -0
- package/extensions/git-helper/commands/git/smart-commit.toml +13 -0
- package/extensions/git-helper/wormclaude-extension.json +6 -0
- package/extensions/greet/README.md +76 -0
- package/extensions/greet/commands/greet.toml +4 -0
- package/extensions/greet/wormclaude-extension.json +6 -0
- package/extensions/registry.json +52 -0
- package/extensions/test-generator/README.md +22 -0
- package/extensions/test-generator/commands/test/coverage.toml +12 -0
- package/extensions/test-generator/commands/test/integration.toml +13 -0
- package/extensions/test-generator/commands/test/unit.toml +13 -0
- package/extensions/test-generator/wormclaude-extension.json +6 -0
- package/package.json +5 -2
package/dist/tools.js
CHANGED
|
@@ -11,6 +11,9 @@ import { runAgentLoop } from './agent.js';
|
|
|
11
11
|
import { tasks } from './tasks.js';
|
|
12
12
|
import { getMcpToolSchemas, callMcpTool } from './mcp.js';
|
|
13
13
|
import { getSkills, getSkill, buildSkillPrompt } from './skills.js';
|
|
14
|
+
import { getExcludedTools } from './extensions.js';
|
|
15
|
+
import { checkCommand } from './cmdsec.js';
|
|
16
|
+
import * as Diff from 'diff';
|
|
14
17
|
import * as computer from './computer.js';
|
|
15
18
|
// Agent/alt-agent araçlarının backend'e ulaşması için config. cli.tsx başlangıçta
|
|
16
19
|
// setToolConfig ile aynı (mutable) config nesnesini verir → /config değişiklikleri görülür.
|
|
@@ -516,7 +519,9 @@ const computerToolSchemas = [
|
|
|
516
519
|
];
|
|
517
520
|
export function allToolSchemas() {
|
|
518
521
|
const sk = skillToolSchema();
|
|
519
|
-
|
|
522
|
+
const all = [...toolSchemas, ...computerToolSchemas, ...getMcpToolSchemas(), ...(sk ? [sk] : [])];
|
|
523
|
+
const excluded = new Set(getExcludedTools());
|
|
524
|
+
return excluded.size ? all.filter((t) => !excluded.has(t.function.name)) : all;
|
|
520
525
|
}
|
|
521
526
|
const TOOL_META = {
|
|
522
527
|
Read: { readOnly: true, concurrencySafe: true },
|
|
@@ -599,6 +604,17 @@ async function execOne(call, hooks) {
|
|
|
599
604
|
if (planMode && !isReadOnly(call.name)) {
|
|
600
605
|
return { ok: false, output: 'Plan modunda — yazma/komut engellendi. Önce ExitPlanMode ile planı onaylat.', args };
|
|
601
606
|
}
|
|
607
|
+
// 3.5) Komut güvenliği (Bash/PowerShell) — cmdsec: deny→blokla, allow→izinsiz, confirm→izin akışı
|
|
608
|
+
if ((call.name === 'Bash' || call.name === 'PowerShell') && args && args.command) {
|
|
609
|
+
const chk = checkCommand(String(args.command));
|
|
610
|
+
if (chk.decision === 'deny') {
|
|
611
|
+
return { ok: false, output: `⛔ Güvenlik: komut engellendi — ${chk.reason || 'tehlikeli komut'}`, args };
|
|
612
|
+
}
|
|
613
|
+
if (chk.decision === 'allow') {
|
|
614
|
+
const res = await executeTool(call.name, args);
|
|
615
|
+
return { ...res, args };
|
|
616
|
+
}
|
|
617
|
+
}
|
|
602
618
|
// 4) İzin (gerekiyorsa)
|
|
603
619
|
if (needsPermission(call.name) && hooks?.confirm) {
|
|
604
620
|
const decision = await hooks.confirm(call, args);
|
|
@@ -761,6 +777,23 @@ const TYPE_EXT = {
|
|
|
761
777
|
sh: ['sh', 'bash', 'zsh'],
|
|
762
778
|
};
|
|
763
779
|
// ── Executor ──────────────────────────────────────────────────────────────────
|
|
780
|
+
// Edit/Write icin +/- satir ozeti (Diff paketiyle).
|
|
781
|
+
function diffStat(oldStr, newStr) {
|
|
782
|
+
try {
|
|
783
|
+
let added = 0, removed = 0;
|
|
784
|
+
for (const part of Diff.diffLines(oldStr || '', newStr || '')) {
|
|
785
|
+
const n = part.count || (part.value ? part.value.split('\n').filter(Boolean).length : 0);
|
|
786
|
+
if (part.added)
|
|
787
|
+
added += n;
|
|
788
|
+
else if (part.removed)
|
|
789
|
+
removed += n;
|
|
790
|
+
}
|
|
791
|
+
return (added || removed) ? ` (+${added} -${removed})` : '';
|
|
792
|
+
}
|
|
793
|
+
catch {
|
|
794
|
+
return '';
|
|
795
|
+
}
|
|
796
|
+
}
|
|
764
797
|
export async function executeTool(name, args) {
|
|
765
798
|
try {
|
|
766
799
|
if (name === 'See') {
|
|
@@ -874,9 +907,16 @@ export async function executeTool(name, args) {
|
|
|
874
907
|
if (fs.existsSync(fp) && !readFiles.has(norm(fp)))
|
|
875
908
|
return { ok: false, output: 'Error: existing file must be read first. Use the Read tool before overwriting.' };
|
|
876
909
|
fs.mkdirSync(path.dirname(path.resolve(fp)), { recursive: true });
|
|
877
|
-
|
|
910
|
+
const _wnew = args.content ?? '';
|
|
911
|
+
const _wold = (() => { try {
|
|
912
|
+
return fs.readFileSync(fp, 'utf8');
|
|
913
|
+
}
|
|
914
|
+
catch {
|
|
915
|
+
return '';
|
|
916
|
+
} })();
|
|
917
|
+
fs.writeFileSync(fp, _wnew);
|
|
878
918
|
readFiles.add(norm(fp));
|
|
879
|
-
return { ok: true, output: `Wrote ${fp} (${
|
|
919
|
+
return { ok: true, output: `Wrote ${fp} (${_wnew.length} chars)${diffStat(_wold, _wnew)}` };
|
|
880
920
|
}
|
|
881
921
|
if (name === 'Edit') {
|
|
882
922
|
const fp = args.file_path;
|
|
@@ -897,9 +937,10 @@ export async function executeTool(name, args) {
|
|
|
897
937
|
ok: false,
|
|
898
938
|
output: `Error: old_string is not unique (${count} matches). Provide more surrounding context or set replace_all: true.`,
|
|
899
939
|
};
|
|
940
|
+
const _ebefore = c;
|
|
900
941
|
c = args.replace_all ? c.split(oldStr).join(newStr) : c.replace(oldStr, newStr);
|
|
901
942
|
fs.writeFileSync(fp, c);
|
|
902
|
-
return { ok: true, output: `Edited ${fp}${args.replace_all ? ` (${count} occurrences)` : ''}` };
|
|
943
|
+
return { ok: true, output: `Edited ${fp}${args.replace_all ? ` (${count} occurrences)` : ''}${diffStat(_ebefore, c)}` };
|
|
903
944
|
}
|
|
904
945
|
if (name === 'Glob') {
|
|
905
946
|
const base = args.path || process.cwd();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Code Review Extension
|
|
2
|
+
|
|
3
|
+
Automated code review assistant. Each command reviews the current uncommitted diff by default, or a path you name.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
- `/review:security` - Security-focused review (injection, XSS, access control, secrets, SSRF, deps…)
|
|
8
|
+
- `/review:performance` - Performance review (complexity, N+1 queries, I/O, memory, re-renders…)
|
|
9
|
+
- `/review:best-practices` - Code quality review (readability, structure, error handling, tests, docs)
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
wormclaude extensions install --from-registry code-review
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or use `/browse-extensions` in the CLI and select this extension.
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
|
|
21
|
+
- Reviews are read-only by default — they report findings with `file:line` evidence and concrete fixes; they don't change code unless you ask.
|
|
22
|
+
- If the project has `code_styleguides/`, `/review:best-practices` holds the code to those guides.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
description = "Review the current changes or a path for code quality and best practices"
|
|
2
|
+
prompt = """
|
|
3
|
+
Review for code quality and adherence to best practices. Default scope: the uncommitted diff (`git diff HEAD`); otherwise the path the user names. If `code_styleguides/` exists, hold the code to it.
|
|
4
|
+
|
|
5
|
+
Check, with file:line evidence:
|
|
6
|
+
- Readability & naming: clear intent, consistent style, no dead/commented-out code.
|
|
7
|
+
- Structure: DRY, single-responsibility, sensible module boundaries, low coupling.
|
|
8
|
+
- Error handling: errors checked (not swallowed), meaningful messages, no bare catches.
|
|
9
|
+
- Types & contracts: types/annotations present and honest; no `any`-style escape hatches.
|
|
10
|
+
- Tests: meaningful coverage for new logic and edge/failure cases.
|
|
11
|
+
- Docs: public functions/types documented per project convention.
|
|
12
|
+
- Conventions: matches the surrounding code and the project's style guides.
|
|
13
|
+
|
|
14
|
+
For each issue: location, why it matters, and a concrete suggestion. Distinguish must-fix from nice-to-have. Be constructive and specific. Read/analyze only unless asked to change code.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
description = "Performance-focused review of the current changes or a given path"
|
|
2
|
+
prompt = """
|
|
3
|
+
Perform a performance review. Default scope: the uncommitted diff (`git diff HEAD`); otherwise the path the user names.
|
|
4
|
+
|
|
5
|
+
Look for, with file:line evidence:
|
|
6
|
+
- Algorithmic complexity: needless O(n^2)+ loops, repeated work that could be cached/memoized.
|
|
7
|
+
- Database: N+1 queries, missing indexes, SELECT *, unbounded result sets, queries in loops.
|
|
8
|
+
- I/O & network: synchronous/blocking calls on hot paths, missing batching, chatty requests.
|
|
9
|
+
- Memory: leaks, large allocations, retaining references, loading whole files when streaming would do.
|
|
10
|
+
- Frontend: unnecessary re-renders, large bundles, unoptimized images, layout thrashing.
|
|
11
|
+
- Concurrency: lock contention, blocking the event loop.
|
|
12
|
+
|
|
13
|
+
For each issue: location, why it's slow, the realistic impact, and a concrete fix (with a code sketch where useful). Prioritize by expected impact. Do not micro-optimize where it doesn't matter — call that out too. Read/analyze only unless asked to change code.
|
|
14
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
description = "Security-focused review of the current changes or a given path"
|
|
2
|
+
prompt = """
|
|
3
|
+
Perform a security review. Default scope: the uncommitted diff (`git diff HEAD`); if the repo is clean or the user names a path, review that path instead.
|
|
4
|
+
|
|
5
|
+
Look for, and prove each finding with file:line:
|
|
6
|
+
- Injection: SQL, command, SSTI, LDAP/NoSQL.
|
|
7
|
+
- XSS / missing output encoding; dangerous innerHTML/render.
|
|
8
|
+
- Broken access control: IDOR, missing authz, security-by-obscurity.
|
|
9
|
+
- Auth/session: weak tokens, broken JWT verification, plaintext/weak password storage.
|
|
10
|
+
- Secrets committed in code or config.
|
|
11
|
+
- Path traversal, unsafe file ops, unsafe deserialization.
|
|
12
|
+
- SSRF, open redirect, CORS misconfiguration.
|
|
13
|
+
- Vulnerable/outdated dependencies.
|
|
14
|
+
|
|
15
|
+
For each finding give: location, class, severity (Critical/High/Medium/Low), real-world impact, and a concrete secure fix. Be precise — back every claim with code. End with a short prioritized summary. This is read/analyze only; do not change code unless asked.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Conductor Extension for wormclaude CLI
|
|
2
|
+
|
|
3
|
+
The Conductor extension enables Context-Driven Development (CDD) - a structured approach to software development that emphasizes clear specifications, systematic planning, and rigorous execution tracking.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Conductor provides a spec-driven workflow that guides you through:
|
|
8
|
+
1. **Context** - Understanding the problem and requirements
|
|
9
|
+
2. **Spec & Plan** - Creating detailed specifications and implementation plans
|
|
10
|
+
3. **Implement** - Following the plan with strict adherence to workflow
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
wormclaude extensions install ./path/to/conductor
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or copy this example to your extensions directory:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
cp -r packages/cli/src/commands/extensions/examples/conductor ~/.wormclaude/extensions/
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Commands
|
|
25
|
+
|
|
26
|
+
### `/conductor:setup`
|
|
27
|
+
Initialize a new project with Conductor workflow files.
|
|
28
|
+
|
|
29
|
+
**Usage:**
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
/conductor:setup
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**What it creates:**
|
|
36
|
+
- `plan.md` - Project plan with phases and tasks
|
|
37
|
+
- `tech-stack.md` - Technology decisions and architecture
|
|
38
|
+
- `product.md` - Product specification and requirements
|
|
39
|
+
- `product-guidelines.md` - Design and development guidelines
|
|
40
|
+
- `workflow.md` - Development workflow and processes
|
|
41
|
+
- `code_styleguides/` - Language-specific style guides
|
|
42
|
+
- `.wormclaudeignore` - Files to exclude from wormclaude context
|
|
43
|
+
|
|
44
|
+
### `/conductor:newTrack`
|
|
45
|
+
Create a new development track (feature/bug fix) with planning.
|
|
46
|
+
|
|
47
|
+
**Usage:**
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/conductor:newTrack
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**What it does:**
|
|
54
|
+
- Analyzes current project state
|
|
55
|
+
- Creates detailed implementation plan
|
|
56
|
+
- Sets up tracking structure
|
|
57
|
+
- Guides through specification process
|
|
58
|
+
|
|
59
|
+
### `/conductor:implement`
|
|
60
|
+
Work on the current track following Conductor workflow.
|
|
61
|
+
|
|
62
|
+
**Usage:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/conductor:implement
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**What it does:**
|
|
69
|
+
- Enforces Test-Driven Development (TDD)
|
|
70
|
+
- Tracks task progress in `plan.md`
|
|
71
|
+
- Manages git commits with detailed notes
|
|
72
|
+
- Handles phase completion and checkpointing
|
|
73
|
+
- Ensures quality gates are met
|
|
74
|
+
|
|
75
|
+
### `/conductor:status`
|
|
76
|
+
Show current project status and progress.
|
|
77
|
+
|
|
78
|
+
**Usage:**
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
/conductor:status
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**What it shows:**
|
|
85
|
+
- Current phase and tasks
|
|
86
|
+
- Completed work with commit references
|
|
87
|
+
- Quality metrics and coverage
|
|
88
|
+
- Next steps and recommendations
|
|
89
|
+
|
|
90
|
+
### `/conductor:revert`
|
|
91
|
+
Revert changes using git-aware rollback.
|
|
92
|
+
|
|
93
|
+
**Usage:**
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
/conductor:revert
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**What it does:**
|
|
100
|
+
- Safely reverts to previous checkpoints
|
|
101
|
+
- Handles track, phase, or task-level rollbacks
|
|
102
|
+
- Preserves git history and notes
|
|
103
|
+
- Updates plan.md accordingly
|
|
104
|
+
|
|
105
|
+
## Workflow Overview
|
|
106
|
+
|
|
107
|
+
### 1. Project Setup
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Initialize new project with Conductor
|
|
111
|
+
/conductor:setup
|
|
112
|
+
|
|
113
|
+
# Review and customize generated files
|
|
114
|
+
# - Edit product.md with your requirements
|
|
115
|
+
# - Update tech-stack.md with your technology choices
|
|
116
|
+
# - Customize workflow.md for your team
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 2. Development Cycle
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Start new feature/track
|
|
123
|
+
/conductor:newTrack
|
|
124
|
+
|
|
125
|
+
# Work on implementation
|
|
126
|
+
/conductor:implement
|
|
127
|
+
|
|
128
|
+
# Check progress
|
|
129
|
+
/conductor:status
|
|
130
|
+
|
|
131
|
+
# Revert if needed
|
|
132
|
+
/conductor:revert
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 3. Quality Gates
|
|
136
|
+
Every task must pass:
|
|
137
|
+
- ✅ All tests pass
|
|
138
|
+
- ✅ Code coverage >80%
|
|
139
|
+
- ✅ Follows style guidelines
|
|
140
|
+
- ✅ Documentation updated
|
|
141
|
+
- ✅ Security review (if applicable)
|
|
142
|
+
|
|
143
|
+
## Key Features
|
|
144
|
+
|
|
145
|
+
### Test-Driven Development
|
|
146
|
+
- Enforces Red-Green-Refactor cycle
|
|
147
|
+
- Requires failing tests before implementation
|
|
148
|
+
- Tracks coverage metrics
|
|
149
|
+
- Integrates with project test frameworks
|
|
150
|
+
|
|
151
|
+
### Git Integration
|
|
152
|
+
- Automatic commit tracking
|
|
153
|
+
- Detailed git notes for audit trail
|
|
154
|
+
- Phase checkpointing
|
|
155
|
+
- Safe rollback capabilities
|
|
156
|
+
|
|
157
|
+
### Progress Tracking
|
|
158
|
+
- Task status in `plan.md`
|
|
159
|
+
- Commit SHA tracking
|
|
160
|
+
- Phase completion markers
|
|
161
|
+
- Quality gate verification
|
|
162
|
+
|
|
163
|
+
### Template System
|
|
164
|
+
- Project templates for common setups
|
|
165
|
+
- Code style guides for multiple languages
|
|
166
|
+
- Workflow templates adaptable to any tech stack
|
|
167
|
+
- Product specification templates
|
|
168
|
+
|
|
169
|
+
## File Structure
|
|
170
|
+
|
|
171
|
+
After setup, your project will have:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
project/
|
|
175
|
+
├── plan.md # Main project plan
|
|
176
|
+
├── tech-stack.md # Technology decisions
|
|
177
|
+
├── product.md # Product specification
|
|
178
|
+
├── product-guidelines.md # Design guidelines
|
|
179
|
+
├── workflow.md # Development workflow
|
|
180
|
+
├── .wormclaudeignore # wormclaude exclusions
|
|
181
|
+
└── code_styleguides/ # Style guides
|
|
182
|
+
├── general.md
|
|
183
|
+
├── javascript.md
|
|
184
|
+
├── typescript.md
|
|
185
|
+
├── python.md
|
|
186
|
+
└── go.md
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Best Practices
|
|
190
|
+
|
|
191
|
+
### Planning
|
|
192
|
+
- Keep tasks small and specific
|
|
193
|
+
- Write clear acceptance criteria
|
|
194
|
+
- Update tech-stack.md before implementation
|
|
195
|
+
- Review product.md regularly
|
|
196
|
+
|
|
197
|
+
### Implementation
|
|
198
|
+
- Follow TDD strictly (Red-Green-Refactor)
|
|
199
|
+
- Commit frequently with descriptive messages
|
|
200
|
+
- Update plan.md as you complete tasks
|
|
201
|
+
- Run quality checks before marking tasks complete
|
|
202
|
+
|
|
203
|
+
### Team Collaboration
|
|
204
|
+
- Use consistent commit message format
|
|
205
|
+
- Review and update workflow.md together
|
|
206
|
+
- Share code style guidelines
|
|
207
|
+
- Conduct regular retrospectives
|
|
208
|
+
|
|
209
|
+
## Customization
|
|
210
|
+
|
|
211
|
+
### Adapting Templates
|
|
212
|
+
The templates in `templates/` can be customized:
|
|
213
|
+
- Modify `workflow.md` for your team's process
|
|
214
|
+
- Update style guides for your coding standards
|
|
215
|
+
- Customize `product.md` template for your domain
|
|
216
|
+
- Add new templates as needed
|
|
217
|
+
|
|
218
|
+
### Project-Specific Setup
|
|
219
|
+
- Update `.wormclaudeignore` for your project structure
|
|
220
|
+
- Modify quality gates in workflow.md
|
|
221
|
+
- Adapt testing requirements
|
|
222
|
+
- Customize deployment processes
|
|
223
|
+
|
|
224
|
+
## Troubleshooting
|
|
225
|
+
|
|
226
|
+
### Common Issues
|
|
227
|
+
|
|
228
|
+
**Q: Tests are failing during implementation**
|
|
229
|
+
A: This is expected in TDD. Write failing tests first (Red), then implement to make them pass (Green), then refactor.
|
|
230
|
+
|
|
231
|
+
**Q: Can't find previous checkpoint**
|
|
232
|
+
A: Use `/conductor:status` to see available checkpoints, or check git notes with `git notes list`.
|
|
233
|
+
|
|
234
|
+
**Q: Quality gates are too strict**
|
|
235
|
+
A: Customize the quality requirements in `workflow.md` to match your project needs.
|
|
236
|
+
|
|
237
|
+
**Q: Extension commands not working**
|
|
238
|
+
A: Ensure the extension is properly installed with `wormclaude extensions list`.
|
|
239
|
+
|
|
240
|
+
## Contributing
|
|
241
|
+
|
|
242
|
+
To improve the Conductor extension:
|
|
243
|
+
1. Fork the repository
|
|
244
|
+
2. Make your changes
|
|
245
|
+
3. Test with real projects
|
|
246
|
+
4. Submit a pull request
|
|
247
|
+
|
|
248
|
+
## License
|
|
249
|
+
|
|
250
|
+
This extension follows the same license as wormclaude CLI.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
description = "Work the current track: TDD, task tracking, quality gates, and commits"
|
|
2
|
+
prompt = """
|
|
3
|
+
Implement the next available task on the current Conductor track, following the workflow in `workflow.md`.
|
|
4
|
+
|
|
5
|
+
For the next `[ ]` task in `plan.md` (in order):
|
|
6
|
+
1. Mark it `[~]` (in progress) in `plan.md`.
|
|
7
|
+
2. Mirror the task's steps into TodoWrite so progress is visible.
|
|
8
|
+
3. If the project has tests (or the task warrants them), write the failing test FIRST and confirm it fails for the right reason.
|
|
9
|
+
4. Implement the minimum code to satisfy the task and make the test pass. Follow the project's conventions and `code_styleguides/`. Read a file before you Edit it.
|
|
10
|
+
5. Verify: run the project's build, lint, type-check, and tests (find the real commands from README/manifest — never assume). Do a quick functional check.
|
|
11
|
+
6. If the implementation deviated from `tech-stack.md`, update it with a dated note.
|
|
12
|
+
7. When the task passes the quality gates in `workflow.md`, mark it `[x]` in `plan.md`. If the user asked to commit, stage the related changes and commit with a clear conventional message.
|
|
13
|
+
|
|
14
|
+
Then stop and report what you completed and what the next task is. Do NOT silently work the whole plan at once — one task per invocation unless the user says otherwise.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
description = "Start a new development track (feature/bug fix) with a planned set of phases and tasks"
|
|
2
|
+
prompt = """
|
|
3
|
+
Start a new Conductor development track for the work described by the user.
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Read `product.md`, `tech-stack.md`, and `plan.md` if they exist (run `/conductor:setup` first if they do not).
|
|
7
|
+
2. Clarify the goal: restate the feature/fix in one or two sentences. Ask one sharp question ONLY if a critical detail is missing; otherwise proceed with reasonable assumptions and note them.
|
|
8
|
+
3. Break the work into phases, and each phase into small, specific, testable tasks with clear acceptance criteria.
|
|
9
|
+
4. Append the new track to `plan.md` using checkboxes:
|
|
10
|
+
- `[ ]` not started, `[~]` in progress, `[x]` done.
|
|
11
|
+
- Group tasks under phase headings.
|
|
12
|
+
5. If the approach changes the tech stack, update `tech-stack.md` with a dated note BEFORE implementing.
|
|
13
|
+
6. Summarize the track and tell the user to run `/conductor:implement` to begin.
|
|
14
|
+
|
|
15
|
+
Use the Write/Edit tools to update plan.md. Keep tasks small enough to finish and verify individually.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
description = "Safely roll back the last task or phase using git, and update the plan"
|
|
2
|
+
prompt = """
|
|
3
|
+
Help the user safely revert recent Conductor work.
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Run `git status` and `git log --oneline -n 10` to show the recent commits and current state.
|
|
7
|
+
2. Ask the user (or infer from their request) the rollback scope: the last TASK, the last PHASE, or a specific commit.
|
|
8
|
+
3. Propose the exact git command(s) you would run (e.g. `git revert <sha>` to keep history, or `git reset --hard <sha>` only if the user explicitly wants to discard). Prefer `git revert` (non-destructive) by default. Explain the impact before running anything.
|
|
9
|
+
4. Only after the user confirms, perform the rollback.
|
|
10
|
+
5. Update `plan.md` to reflect the reverted task/phase status (change `[x]`/`[~]` back to `[ ]` as appropriate).
|
|
11
|
+
6. Confirm the final state with `git status`.
|
|
12
|
+
|
|
13
|
+
NEVER discard uncommitted work or force-reset without explicit confirmation. Never push.
|
|
14
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
description = "Initialize the project for Context-Driven Development (plan, specs, workflow, style guides)"
|
|
2
|
+
prompt = """
|
|
3
|
+
You are setting up Context-Driven Development (CDD) for the CURRENT project.
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Explore the repo: Read the package manifest (package.json, requirements.txt, go.mod, pyproject.toml, Cargo.toml, etc.) and a few key files to detect the language, framework, and purpose.
|
|
7
|
+
2. Read the template files in this extension's `templates/` directory (Read them — do not invent their contents).
|
|
8
|
+
3. Create these files in the PROJECT ROOT, adapting each template to THIS project. Use the Write tool for each, one call per file:
|
|
9
|
+
- `plan.md`, `tech-stack.md`, `product.md`, `product-guidelines.md`, `workflow.md`, `.wormclaudeignore`
|
|
10
|
+
- `code_styleguides/` — copy only the guides relevant to the detected stack, and always include `general.md`.
|
|
11
|
+
4. Fill `tech-stack.md` and `product.md` with what you actually inferred from the repo; leave clearly-marked TODOs where you genuinely cannot tell.
|
|
12
|
+
5. Do NOT overwrite an existing file without saying so — if one exists, skip it and note it.
|
|
13
|
+
6. Finish with a short summary of what was created and tell the user the next step is `/conductor:newTrack`.
|
|
14
|
+
|
|
15
|
+
Keep going until all files are created. Be concise in your final report.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
description = "Show the current track status: phases, tasks, progress, and next steps"
|
|
2
|
+
prompt = """
|
|
3
|
+
Report the current Conductor status.
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Read `plan.md`. If it does not exist, tell the user to run `/conductor:setup` and `/conductor:newTrack`.
|
|
7
|
+
2. Summarize:
|
|
8
|
+
- Current phase and which task is in progress (`[~]`).
|
|
9
|
+
- Completed tasks (`[x]`) and how many remain (`[ ]`), as a simple progress count.
|
|
10
|
+
- If commit SHAs or checkpoints are recorded in plan.md, list the most recent ones.
|
|
11
|
+
3. If a test/coverage report is easy to obtain (e.g. the project has a coverage script), you MAY run it and report the number — otherwise skip it.
|
|
12
|
+
4. End with a clear recommended next step (usually `/conductor:implement`).
|
|
13
|
+
|
|
14
|
+
This is a READ-ONLY status report — do not modify any files.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Files and directories WormClaude should ignore for project context.
|
|
2
|
+
# Same glob style as .gitignore.
|
|
3
|
+
|
|
4
|
+
# Dependencies
|
|
5
|
+
node_modules/
|
|
6
|
+
vendor/
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
__pycache__/
|
|
10
|
+
|
|
11
|
+
# Build output
|
|
12
|
+
dist/
|
|
13
|
+
build/
|
|
14
|
+
out/
|
|
15
|
+
target/
|
|
16
|
+
.next/
|
|
17
|
+
coverage/
|
|
18
|
+
|
|
19
|
+
# Logs & temp
|
|
20
|
+
*.log
|
|
21
|
+
.DS_Store
|
|
22
|
+
tmp/
|
|
23
|
+
.cache/
|
|
24
|
+
|
|
25
|
+
# Secrets (never load into context)
|
|
26
|
+
.env
|
|
27
|
+
.env.*
|
|
28
|
+
*.pem
|
|
29
|
+
*.key
|
|
30
|
+
|
|
31
|
+
# Large/binary assets
|
|
32
|
+
*.zip
|
|
33
|
+
*.tar.gz
|
|
34
|
+
*.mp4
|
|
35
|
+
*.png
|
|
36
|
+
*.jpg
|
|
37
|
+
*.pdf
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Effective Go Style Guide Summary
|
|
2
|
+
|
|
3
|
+
This document summarizes key rules and best practices from the official "Effective Go" guide for writing idiomatic Go code.
|
|
4
|
+
|
|
5
|
+
## 1. Formatting
|
|
6
|
+
- **gofmt**: All Go code must be formatted with `gofmt` (or `go fmt`). This is a non-negotiable, automated standard.
|
|
7
|
+
- **Indentation**: Use tabs for indentation (gofmt handles this).
|
|
8
|
+
- **Line Length**: Go has no strict line length limit. Let gofmt handle line wrapping.
|
|
9
|
+
|
|
10
|
+
## 2. Naming
|
|
11
|
+
- **MixedCaps**: Use `MixedCaps` or `mixedCaps` for multi-word names. Do not use underscores.
|
|
12
|
+
- **Exported vs. Unexported**: Names starting with an uppercase letter are exported (public). Names starting with a lowercase letter are not exported (private).
|
|
13
|
+
- **Package Names**: Short, concise, single-word, lowercase names.
|
|
14
|
+
- **Getters**: Do not name getters with a `Get` prefix. A getter for a field named `owner` should be named `Owner()`.
|
|
15
|
+
- **Interface Names**: One-method interfaces are named by the method name plus an `-er` suffix (e.g., `Reader`, `Writer`).
|
|
16
|
+
|
|
17
|
+
## 3. Control Structures
|
|
18
|
+
- **if**: No parentheses around the condition. Braces are mandatory. Can include an initialization statement (e.g., `if err := file.Chmod(0664); err != nil`).
|
|
19
|
+
- **for**: Go's only looping construct. Unifies `for` and `while`. Use `for...range` to iterate over slices, maps, strings, and channels.
|
|
20
|
+
- **switch**: More general than in C. Cases do not fall through by default (use `fallthrough` explicitly). Can be used without an expression to function as a cleaner if-else-if chain.
|
|
21
|
+
|
|
22
|
+
## 4. Functions
|
|
23
|
+
- **Multiple Returns**: Functions can return multiple values. This is the standard way to return a result and an error (e.g., `value, err`).
|
|
24
|
+
- **Named Result Parameters**: Return parameters can be named. This can make code clearer and more concise.
|
|
25
|
+
- **defer**: Schedules a function call to be run immediately before the function executing `defer` returns. Use it for cleanup tasks like closing files.
|
|
26
|
+
|
|
27
|
+
## 5. Data
|
|
28
|
+
- **new vs. make**:
|
|
29
|
+
- `new(T)`: Allocates memory for a new item of type T, zeroes it, and returns a pointer (`*T`).
|
|
30
|
+
- `make(T, ...)`: Creates and initializes slices, maps, and channels only. Returns an initialized value of type T (not a pointer).
|
|
31
|
+
- **Slices**: The preferred way to work with sequences. They are more flexible than arrays.
|
|
32
|
+
- **Maps**: Use the "comma ok" idiom to check for the existence of a key: `value, ok := myMap[key]`.
|
|
33
|
+
|
|
34
|
+
## 6. Interfaces
|
|
35
|
+
- **Implicit Implementation**: A type implements an interface by implementing its methods. No `implements` keyword is needed.
|
|
36
|
+
- **Small Interfaces**: Prefer many small interfaces over one large one. The standard library is full of single-method interfaces (e.g., `io.Reader`).
|
|
37
|
+
|
|
38
|
+
## 7. Concurrency
|
|
39
|
+
- **Share Memory By Communicating**: This is the core philosophy. Do not communicate by sharing memory; instead, share memory by communicating.
|
|
40
|
+
- **Goroutines**: Lightweight, concurrently executing functions. Start one with the `go` keyword.
|
|
41
|
+
- **Channels**: Typed conduits for communication between goroutines. Use `make` to create them.
|
|
42
|
+
|
|
43
|
+
## 8. Errors
|
|
44
|
+
- **error type**: The built-in `error` interface is the standard way to handle errors.
|
|
45
|
+
- **Explicit Error Handling**: Do not discard errors with the blank identifier (`_`). Check for errors explicitly.
|
|
46
|
+
- **panic**: Reserved for truly exceptional, unrecoverable situations. Generally, libraries should not panic.
|
|
47
|
+
|
|
48
|
+
Source: Effective Go
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Google HTML/CSS Style Guide Summary
|
|
2
|
+
|
|
3
|
+
This document summarizes key rules and best practices from the Google HTML/CSS Style Guide.
|
|
4
|
+
|
|
5
|
+
## 1. General Rules
|
|
6
|
+
- **Protocol**: Use HTTPS for all embedded resources.
|
|
7
|
+
- **Indentation**: Indent by 2 spaces. Do not use tabs.
|
|
8
|
+
- **Capitalization**: Use only lowercase for all code (element names, attributes, selectors, properties).
|
|
9
|
+
- **Trailing Whitespace**: Remove all trailing whitespace.
|
|
10
|
+
- **Encoding**: Use UTF-8 (without a BOM). Specify `<meta charset="utf-8">` in HTML.
|
|
11
|
+
|
|
12
|
+
## 2. HTML Style Rules
|
|
13
|
+
- **Document Type**: Use `<!doctype html>`.
|
|
14
|
+
- **HTML Validity**: Use valid HTML.
|
|
15
|
+
- **Semantics**: Use HTML elements according to their intended purpose (e.g., use `<p>` for paragraphs, not for spacing).
|
|
16
|
+
- **Multimedia Fallback**: Provide `alt` text for images and transcripts/captions for audio/video.
|
|
17
|
+
- **Separation of Concerns**: Strictly separate structure (HTML), presentation (CSS), and behavior (JavaScript). Link to CSS and JS from external files.
|
|
18
|
+
- **type Attributes**: Omit `type` attributes for stylesheets (`<link>`) and scripts (`<script>`).
|
|
19
|
+
|
|
20
|
+
## 3. HTML Formatting Rules
|
|
21
|
+
- **General**: Use a new line for every block, list, or table element, and indent its children.
|
|
22
|
+
- **Quotation Marks**: Use double quotation marks (`""`) for attribute values.
|
|
23
|
+
|
|
24
|
+
## 4. CSS Style Rules
|
|
25
|
+
- **CSS Validity**: Use valid CSS.
|
|
26
|
+
- **Class Naming**: Use meaningful, generic names. Separate words with a hyphen (`-`).
|
|
27
|
+
- Good: `.video-player`, `.site-navigation`
|
|
28
|
+
- Bad: `.vid`, `.red-text`
|
|
29
|
+
- **ID Selectors**: Avoid using ID selectors for styling. Prefer class selectors.
|
|
30
|
+
- **Shorthand Properties**: Use shorthand properties where possible (e.g., `padding`, `font`).
|
|
31
|
+
- **0 and Units**: Omit units for 0 values (e.g., `margin: 0;`).
|
|
32
|
+
- **Leading 0s**: Always include leading 0s for decimal values (e.g., `font-size: 0.8em;`).
|
|
33
|
+
- **Hexadecimal Notation**: Use 3-character hex notation where possible (e.g., `#fff`).
|
|
34
|
+
- **!important**: Avoid using `!important`.
|
|
35
|
+
|
|
36
|
+
## 5. CSS Formatting Rules
|
|
37
|
+
- **Declaration Order**: Alphabetize declarations within a rule.
|
|
38
|
+
- **Indentation**: Indent all block content.
|
|
39
|
+
- **Semicolons**: Use a semicolon after every declaration.
|
|
40
|
+
- **Spacing**:
|
|
41
|
+
- Use a space after a property name's colon (`font-weight: bold;`).
|
|
42
|
+
- Use a space between the last selector and the opening brace (`.foo {`).
|
|
43
|
+
- Start a new line for each selector and declaration.
|
|
44
|
+
- **Rule Separation**: Separate rules with a new line.
|
|
45
|
+
- **Quotation Marks**: Use single quotes (`''`) for attribute selectors and property values (e.g., `[type='text']`).
|
|
46
|
+
|
|
47
|
+
BE CONSISTENT. When editing code, match the existing style.
|
|
48
|
+
|
|
49
|
+
Source: Google HTML/CSS Style Guide
|