Skip to content

Commit 4909286

Browse files
authored
docs(readme): update command names with systematic namespace (#45)
Update README.md to reflect new systematic: prefix for bundled commands. All utility commands now include the namespace to prevent conflicts. Changes: - Update command references from /lfg to /systematic:lfg - Update command references from /create-agent-skill to /systematic:create-agent-skill - Update command references from /deepen-plan to /systematic:deepen-plan - Update command references from /agent-native-audit to /systematic:agent-native-audit - Enhance mermaid diagram styling with dark theme colors
1 parent 2014d8f commit 4909286

3 files changed

Lines changed: 29 additions & 19 deletions

File tree

README.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,10 @@ Commands are slash-invokable shortcuts that trigger workflows or actions.
165165

166166
| Command | Description |
167167
|---------|-------------|
168-
| `/lfg` | "Let's go" — start working immediately |
169-
| `/create-agent-skill` | Create a new skill with guidance |
170-
| `/deepen-plan` | Add detail to existing plans |
171-
| `/agent-native-audit` | Audit code for agent-native patterns |
168+
| `/systematic:lfg` | "Let's go" — start working immediately |
169+
| `/systematic:create-agent-skill` | Create a new skill with guidance |
170+
| `/systematic:deepen-plan` | Add detail to existing plans |
171+
| `/systematic:agent-native-audit` | Audit code for agent-native patterns |
172172

173173
## Configuration
174174

@@ -218,6 +218,7 @@ For non-Systematic skills (project or user-level), use OpenCode's native `skill`
218218
Systematic uses three OpenCode plugin hooks:
219219

220220
```mermaid
221+
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#1a1a2e', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4FD1C5', 'lineColor': '#4FD1C5', 'secondaryColor': '#16213e', 'tertiaryColor': '#0f0f23'}}}%%
221222
flowchart TB
222223
A[Plugin Loaded] --> B[config hook]
223224
A --> C[tool hook]
@@ -227,10 +228,13 @@ flowchart TB
227228
C --> F[Register systematic_skill tool]
228229
D --> G[Inject bootstrap prompt into every conversation]
229230
230-
style A fill:#e1f5fe
231-
style E fill:#f1f8e9
232-
style F fill:#fff3e0
233-
style G fill:#fce4ec
231+
style A fill:#1a1a2e,stroke:#4FD1C5,color:#fff
232+
style B fill:#16213e,stroke:#4FD1C5,color:#4FD1C5
233+
style C fill:#16213e,stroke:#E91E8C,color:#E91E8C
234+
style D fill:#16213e,stroke:#F5A623,color:#F5A623
235+
style E fill:#0f0f23,stroke:#4FD1C5,color:#B2F5EA
236+
style F fill:#0f0f23,stroke:#E91E8C,color:#B2F5EA
237+
style G fill:#0f0f23,stroke:#F5A623,color:#B2F5EA
234238
```
235239

236240
1. **`config` hook** — Merges bundled assets into your OpenCode configuration

src/lib/config-handler.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@ function loadCommandAsConfig(commandInfo: {
7676

7777
const cleanName = commandInfo.name.replace(/^\//, '')
7878

79+
const baseDescription = description || `${name || cleanName} command`
80+
7981
const config: CommandConfig = {
8082
template: body.trim(),
81-
description: description || `${name || cleanName} command`,
83+
description: `(systematic) ${baseDescription}`,
8284
}
8385

8486
if (agent !== undefined) config.agent = agent
@@ -136,7 +138,11 @@ function collectCommands(
136138

137139
const config = loadCommandAsConfig(commandInfo)
138140
if (config) {
139-
commands[cleanName] = config
141+
// Prefix commands without a colon with 'systematic:'
142+
const prefixedName = cleanName.includes(':')
143+
? cleanName
144+
: `systematic:${cleanName}`
145+
commands[prefixedName] = config
140146
}
141147
}
142148

tests/unit/config-handler.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ Command template for ${name}.`,
125125
await handler(config)
126126

127127
expect(config.command).toBeDefined()
128-
expect(config.command?.['test-command']).toBeDefined()
129-
expect(config.command?.['test-command']?.description).toBe(
130-
'A test command',
128+
expect(config.command?.['systematic:test-command']).toBeDefined()
129+
expect(config.command?.['systematic:test-command']?.description).toBe(
130+
'(systematic) A test command',
131131
)
132-
expect(config.command?.['test-command']?.template).toContain(
132+
expect(config.command?.['systematic:test-command']?.template).toContain(
133133
'Command template for test-command',
134134
)
135135
})
@@ -384,7 +384,7 @@ Use oracle for this task.`,
384384
const config: Config = {}
385385
await handler(config)
386386

387-
expect(config.command?.routed?.agent).toBe('oracle')
387+
expect(config.command?.['systematic:routed']?.agent).toBe('oracle')
388388
})
389389

390390
test('includes model field in command config', async () => {
@@ -408,7 +408,7 @@ Use gpt-4 for this task.`,
408408
const config: Config = {}
409409
await handler(config)
410410

411-
expect(config.command?.modeled?.model).toBe('openai/gpt-4')
411+
expect(config.command?.['systematic:modeled']?.model).toBe('openai/gpt-4')
412412
})
413413

414414
test('includes subtask field in command config', async () => {
@@ -432,7 +432,7 @@ Run as subtask.`,
432432
const config: Config = {}
433433
await handler(config)
434434

435-
expect(config.command?.subtasked?.subtask).toBe(true)
435+
expect(config.command?.['systematic:subtasked']?.subtask).toBe(true)
436436
})
437437

438438
test('extracts all command frontmatter fields into config', async () => {
@@ -458,9 +458,9 @@ Full command template.`,
458458
const config: Config = {}
459459
await handler(config)
460460

461-
const command = config.command?.['full-command']
461+
const command = config.command?.['systematic:full-command']
462462
expect(command).toBeDefined()
463-
expect(command?.description).toBe('A full command')
463+
expect(command?.description).toBe('(systematic) A full command')
464464
expect(command?.agent).toBe('oracle')
465465
expect(command?.model).toBe('openai/gpt-4')
466466
expect(command?.subtask).toBe(true)

0 commit comments

Comments
 (0)