wormclaude 1.0.12 → 1.0.13

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.
Files changed (42) hide show
  1. package/dist/cli.js +12 -1
  2. package/dist/extensions.js +137 -0
  3. package/dist/theme.js +1 -1
  4. package/dist/tools.js +4 -1
  5. package/extensions/code-review/README.md +22 -0
  6. package/extensions/code-review/commands/review/best-practices.toml +15 -0
  7. package/extensions/code-review/commands/review/performance.toml +14 -0
  8. package/extensions/code-review/commands/review/security.toml +16 -0
  9. package/extensions/code-review/wormclaude-extension.json +6 -0
  10. package/extensions/conductor/README.md +250 -0
  11. package/extensions/conductor/commands/conductor/implement.toml +15 -0
  12. package/extensions/conductor/commands/conductor/newTrack.toml +16 -0
  13. package/extensions/conductor/commands/conductor/revert.toml +14 -0
  14. package/extensions/conductor/commands/conductor/setup.toml +16 -0
  15. package/extensions/conductor/commands/conductor/status.toml +15 -0
  16. package/extensions/conductor/templates/.wormclaudeignore +37 -0
  17. package/extensions/conductor/templates/code_styleguides/go.md +48 -0
  18. package/extensions/conductor/templates/code_styleguides/html-css.md +49 -0
  19. package/extensions/conductor/templates/code_styleguides/javascript.md +51 -0
  20. package/extensions/conductor/templates/code_styleguides/python.md +37 -0
  21. package/extensions/conductor/templates/code_styleguides/typescript.md +43 -0
  22. package/extensions/conductor/templates/general.md +23 -0
  23. package/extensions/conductor/templates/plan.md +18 -0
  24. package/extensions/conductor/templates/product-guidelines.md +25 -0
  25. package/extensions/conductor/templates/product.md +21 -0
  26. package/extensions/conductor/templates/tech-stack.md +25 -0
  27. package/extensions/conductor/templates/workflow.md +138 -0
  28. package/extensions/conductor/wormclaude-extension.json +6 -0
  29. package/extensions/git-helper/README.md +16 -0
  30. package/extensions/git-helper/commands/git/branch-cleanup.toml +13 -0
  31. package/extensions/git-helper/commands/git/smart-commit.toml +13 -0
  32. package/extensions/git-helper/wormclaude-extension.json +6 -0
  33. package/extensions/greet/README.md +76 -0
  34. package/extensions/greet/commands/greet.toml +4 -0
  35. package/extensions/greet/wormclaude-extension.json +6 -0
  36. package/extensions/registry.json +52 -0
  37. package/extensions/test-generator/README.md +22 -0
  38. package/extensions/test-generator/commands/test/coverage.toml +12 -0
  39. package/extensions/test-generator/commands/test/integration.toml +13 -0
  40. package/extensions/test-generator/commands/test/unit.toml +13 -0
  41. package/extensions/test-generator/wormclaude-extension.json +6 -0
  42. package/package.json +3 -2
package/dist/cli.js CHANGED
@@ -12,6 +12,7 @@ import { t, cmdDesc, setLang, saveLang, loadLang, getLang } from './i18n.js';
12
12
  import { linkify } from './links.js';
13
13
  import { recordLearned } from './learn.js';
14
14
  import { loadSkills, getSkills, getSkill, buildSkillPrompt } from './skills.js';
15
+ import { loadExtensions, getExtCommands, getExtCommand, buildExtCommandPrompt } from './extensions.js';
15
16
  import { COMMANDS, runSlashCommand } from './commands.js';
16
17
  import { tasks } from './tasks.js';
17
18
  import { connectMcpServers } from './mcp.js';
@@ -61,6 +62,7 @@ setToolConfig(config); // Agent/alt-agent araçları aynı config'i kullanır
61
62
  const MAX_TURNS = Number(process.env.WORMCLAUDE_MAX_TURNS) || 50; // tur limiti
62
63
  setLang(loadLang() ?? 'tr'); // kayıtlı dili yükle (yoksa tr)
63
64
  loadSkills(); // .wormclaude/skills/*.md yükle
65
+ loadExtensions(); // extensions/<ad>/ (gömülü + kullanıcı + proje) yükle
64
66
  // Kalıcı hafıza: açılışta .wormclaude/memory.md + WORMCLAUDE.md'yi context'e yükle
65
67
  const _memCtx = loadMemoryContext();
66
68
  const _envContext = () => {
@@ -411,10 +413,11 @@ function App() {
411
413
  abortRef.current?.abort();
412
414
  }
413
415
  });
414
- // Slash menüsü filtresi (yerleşik komutlar + skill'ler)
416
+ // Slash menüsü filtresi (yerleşik komutlar + skill'ler + extension komutları)
415
417
  const allCommands = () => [
416
418
  ...COMMANDS,
417
419
  ...getSkills().map((s) => ({ name: '/' + s.name, desc: s.description })),
420
+ ...getExtCommands().map((c) => ({ name: '/' + c.name, desc: c.description })),
418
421
  ];
419
422
  const cmdFilter = (inp) => {
420
423
  const tok = inp.split(' ')[0];
@@ -724,6 +727,14 @@ function App() {
724
727
  }
725
728
  return;
726
729
  }
730
+ // Extension komutu mu? (/ns:cmd veya /cmd — yerleşik komut/skill değilse)
731
+ const extCmd = (!builtin && !skill) ? getExtCommand(tok.slice(1)) : undefined;
732
+ if (extCmd) {
733
+ const extArgs = v.slice(tok.length).trim();
734
+ const prompt = buildExtCommandPrompt(extCmd, extArgs);
735
+ runAgent(prompt, `/${extCmd.name}${extArgs ? ' ' + extArgs : ''}`);
736
+ return;
737
+ }
727
738
  const ctx = {
728
739
  config,
729
740
  getHistory: () => historyRef.current,
@@ -0,0 +1,137 @@
1
+ // Extension sistemi — wormclaude-extension.json (manifest) + commands/**/*.toml + context dosyası.
2
+ // Namespaced slash komutları (/conductor:setup, /git:smart-commit) + excludeTools desteği.
3
+ //
4
+ // extensions/<ad>/
5
+ // wormclaude-extension.json { name, version, contextFileName?, excludeTools? }
6
+ // commands/<ns>/<cmd>.toml → /<ns>:<cmd> (description = "...", prompt = """...""")
7
+ // commands/<cmd>.toml → /<cmd> (namespace yoksa)
8
+ // <contextFileName> (opsiyonel; aktifken context'e yüklenebilir)
9
+ // templates/ ... (opsiyonel; komutlar Read ile kullanır)
10
+ import * as fs from 'node:fs';
11
+ import * as os from 'node:os';
12
+ import * as path from 'node:path';
13
+ import { fileURLToPath } from 'node:url';
14
+ let EXTENSIONS = [];
15
+ // Pakete gömülü extensions (npm ile gelir) + kullanıcı + proje dizinleri.
16
+ const BUNDLED_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'extensions');
17
+ const USER_DIR = path.join(os.homedir(), '.wormclaude', 'extensions');
18
+ const PROJECT_DIR = path.join(process.cwd(), '.wormclaude', 'extensions');
19
+ // Minimal TOML: yalnızca `description = "..."` ve `prompt = """..."""` (veya tek satır) okur.
20
+ function parseToml(raw) {
21
+ let description = '';
22
+ let prompt = '';
23
+ const dm = raw.match(/^\s*description\s*=\s*(?:"([^"]*)"|'([^']*)')/m);
24
+ if (dm)
25
+ description = (dm[1] ?? dm[2] ?? '').trim();
26
+ const pMulti = raw.match(/prompt\s*=\s*"""([\s\S]*?)"""/);
27
+ if (pMulti) {
28
+ prompt = pMulti[1].replace(/^\r?\n/, '').replace(/\s+$/, '');
29
+ }
30
+ else {
31
+ const pSingle = raw.match(/^\s*prompt\s*=\s*"([\s\S]*?)"\s*$/m);
32
+ if (pSingle)
33
+ prompt = pSingle[1];
34
+ }
35
+ return { description, prompt };
36
+ }
37
+ function walkCommands(commandsDir, extName, extDir, ns, out) {
38
+ let entries = [];
39
+ try {
40
+ entries = fs.readdirSync(commandsDir, { withFileTypes: true });
41
+ }
42
+ catch {
43
+ return;
44
+ }
45
+ for (const e of entries) {
46
+ const full = path.join(commandsDir, e.name);
47
+ if (e.isDirectory()) {
48
+ walkCommands(full, extName, extDir, ns ? `${ns}:${e.name}` : e.name, out);
49
+ }
50
+ else if (e.name.endsWith('.toml')) {
51
+ let raw = '';
52
+ try {
53
+ raw = fs.readFileSync(full, 'utf8');
54
+ }
55
+ catch {
56
+ continue;
57
+ }
58
+ const { description, prompt } = parseToml(raw);
59
+ if (!prompt)
60
+ continue;
61
+ const base = e.name.replace(/\.toml$/, '');
62
+ const name = ns ? `${ns}:${base}` : base;
63
+ out.push({ name, description: description || name, prompt, ext: extName, dir: extDir });
64
+ }
65
+ }
66
+ }
67
+ function scanExtDir(dir) {
68
+ let entries = [];
69
+ try {
70
+ entries = fs.readdirSync(dir, { withFileTypes: true });
71
+ }
72
+ catch {
73
+ return;
74
+ }
75
+ for (const e of entries) {
76
+ if (!e.isDirectory())
77
+ continue;
78
+ const extDir = path.join(dir, e.name);
79
+ let manifest = {};
80
+ try {
81
+ manifest = JSON.parse(fs.readFileSync(path.join(extDir, 'wormclaude-extension.json'), 'utf8'));
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ const name = String(manifest.name || e.name).trim();
87
+ const commands = [];
88
+ walkCommands(path.join(extDir, 'commands'), name, extDir, '', commands);
89
+ const ctxName = manifest.contextFileName;
90
+ let contextFile;
91
+ if (ctxName && fs.existsSync(path.join(extDir, ctxName)))
92
+ contextFile = path.join(extDir, ctxName);
93
+ const ext = {
94
+ name,
95
+ version: String(manifest.version || '0.0.0'),
96
+ dir: extDir,
97
+ contextFile,
98
+ excludeTools: Array.isArray(manifest.excludeTools) ? manifest.excludeTools.map(String) : [],
99
+ commands,
100
+ };
101
+ // Proje > kullanıcı > gömülü: aynı ada sahip extension override edilir.
102
+ const i = EXTENSIONS.findIndex((x) => x.name === name);
103
+ if (i >= 0)
104
+ EXTENSIONS[i] = ext;
105
+ else
106
+ EXTENSIONS.push(ext);
107
+ }
108
+ }
109
+ export function loadExtensions() {
110
+ EXTENSIONS = [];
111
+ scanExtDir(BUNDLED_DIR); // gömülü
112
+ scanExtDir(USER_DIR); // kullanıcı geneli
113
+ scanExtDir(PROJECT_DIR); // proje (en yüksek öncelik)
114
+ return EXTENSIONS;
115
+ }
116
+ export function getExtensions() { return EXTENSIONS; }
117
+ export function getExtCommands() { return EXTENSIONS.flatMap((x) => x.commands); }
118
+ export function getExtCommand(name) {
119
+ return getExtCommands().find((c) => c.name === name);
120
+ }
121
+ export function getExcludedTools() {
122
+ return [...new Set(EXTENSIONS.flatMap((x) => x.excludeTools))];
123
+ }
124
+ // Komut prompt'unu kök dizin referansı + kullanıcı argümanı ile birleştirir.
125
+ // {{args}} placeholder'ı varsa onunla değişir; yoksa argüman sona eklenir.
126
+ export function buildExtCommandPrompt(cmd, args) {
127
+ let p = cmd.prompt;
128
+ if (p.includes('{{args}}')) {
129
+ p = p.replace(/\{\{args\}\}/g, args || '');
130
+ }
131
+ else if (args && args.trim()) {
132
+ p += `\n\n## User input\n\n${args.trim()}`;
133
+ }
134
+ return (`Extension base directory: ${cmd.dir}\n` +
135
+ `(You may Read files here — templates/, context, assets — as needed to complete this command.)\n\n` +
136
+ p);
137
+ }
package/dist/theme.js CHANGED
@@ -8,4 +8,4 @@ export const theme = {
8
8
  green: '#4ade80',
9
9
  errorRed: '#ff6b6b',
10
10
  };
11
- export const VERSION = '1.0.12';
11
+ export const VERSION = '1.0.13';
package/dist/tools.js CHANGED
@@ -11,6 +11,7 @@ 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';
14
15
  import * as computer from './computer.js';
15
16
  // Agent/alt-agent araçlarının backend'e ulaşması için config. cli.tsx başlangıçta
16
17
  // setToolConfig ile aynı (mutable) config nesnesini verir → /config değişiklikleri görülür.
@@ -516,7 +517,9 @@ const computerToolSchemas = [
516
517
  ];
517
518
  export function allToolSchemas() {
518
519
  const sk = skillToolSchema();
519
- return [...toolSchemas, ...computerToolSchemas, ...getMcpToolSchemas(), ...(sk ? [sk] : [])];
520
+ const all = [...toolSchemas, ...computerToolSchemas, ...getMcpToolSchemas(), ...(sk ? [sk] : [])];
521
+ const excluded = new Set(getExcludedTools());
522
+ return excluded.size ? all.filter((t) => !excluded.has(t.function.name)) : all;
520
523
  }
521
524
  const TOOL_META = {
522
525
  Read: { readOnly: true, concurrencySafe: true },
@@ -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,6 @@
1
+ {
2
+ "name": "code-review",
3
+ "version": "1.0.0",
4
+ "description": "Automated code review: security, performance, and best-practices passes.",
5
+ "contextFileName": "README.md"
6
+ }
@@ -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