specweave 1.0.246 → 1.0.248
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/CLAUDE.md +26 -24
- package/package.json +1 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh +31 -51
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- SW:META template="claude" version="1.0.
|
|
1
|
+
<!-- SW:META template="claude" version="1.0.247" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,structure,taskformat,secrets,syncing,testing,tdd,api,limits,troubleshooting,lazyloading,principles,linking,mcp,auto,docs" -->
|
|
2
2
|
|
|
3
3
|
<!-- SW:SECTION:hook-priority version="1.0.171" -->
|
|
4
4
|
## ⛔ Hook Instructions Override Everything
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| **"SKILL FIRST"** | Call shown skill FIRST → chain domain skills → implement |
|
|
12
12
|
<!-- SW:END:hook-priority -->
|
|
13
13
|
|
|
14
|
-
<!-- SW:SECTION:header version="1.0.
|
|
14
|
+
<!-- SW:SECTION:header version="1.0.247" -->
|
|
15
15
|
**Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
|
|
16
16
|
<!-- SW:END:header -->
|
|
17
17
|
|
|
@@ -48,7 +48,7 @@ If auto-activation fails, invoke explicitly: `Skill({ skill: "name" })`
|
|
|
48
48
|
|
|
49
49
|
**Native LSP broken in v2.1.0+.** Use: `specweave lsp refs|def|hover src/file.ts SymbolName`
|
|
50
50
|
|
|
51
|
-
<!-- SW:SECTION:start version="1.0.
|
|
51
|
+
<!-- SW:SECTION:start version="1.0.247" -->
|
|
52
52
|
## Getting Started
|
|
53
53
|
|
|
54
54
|
**Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
|
|
@@ -58,7 +58,7 @@ If auto-activation fails, invoke explicitly: `Skill({ skill: "name" })`
|
|
|
58
58
|
2. **Customize**: Edit spec.md and use for setup tasks
|
|
59
59
|
<!-- SW:END:start -->
|
|
60
60
|
|
|
61
|
-
<!-- SW:SECTION:autodetect version="1.0.
|
|
61
|
+
<!-- SW:SECTION:autodetect version="1.0.247" -->
|
|
62
62
|
## Auto-Detection
|
|
63
63
|
|
|
64
64
|
SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
@@ -68,7 +68,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
68
68
|
**Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
|
|
69
69
|
<!-- SW:END:autodetect -->
|
|
70
70
|
|
|
71
|
-
<!-- SW:SECTION:metarule version="1.0.
|
|
71
|
+
<!-- SW:SECTION:metarule version="1.0.247" -->
|
|
72
72
|
## Workflow Orchestration
|
|
73
73
|
|
|
74
74
|
### 1. Plan Mode Default
|
|
@@ -95,7 +95,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
95
95
|
```
|
|
96
96
|
<!-- SW:END:metarule -->
|
|
97
97
|
|
|
98
|
-
<!-- SW:SECTION:rules version="1.0.
|
|
98
|
+
<!-- SW:SECTION:rules version="1.0.247" -->
|
|
99
99
|
## Rules
|
|
100
100
|
|
|
101
101
|
1. **Files** → `.specweave/increments/####-name/` (see Structure section for details)
|
|
@@ -116,7 +116,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
116
116
|
Discover org from config: `repository.organization` → `sync.profiles` → `umbrella.childRepos` → filesystem
|
|
117
117
|
<!-- SW:END:rules -->
|
|
118
118
|
|
|
119
|
-
<!-- SW:SECTION:workflow version="1.0.
|
|
119
|
+
<!-- SW:SECTION:workflow version="1.0.247" -->
|
|
120
120
|
## Workflow
|
|
121
121
|
|
|
122
122
|
`/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
|
|
@@ -142,7 +142,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
142
142
|
Before git operations, scan: `for d in repositories packages services apps libs workspace; do [ -d "$d" ] && find "$d" -maxdepth 2 -name ".git" -type d; done`
|
|
143
143
|
<!-- SW:END:save-nested-repos -->
|
|
144
144
|
|
|
145
|
-
<!-- SW:SECTION:reflect version="1.0.
|
|
145
|
+
<!-- SW:SECTION:reflect version="1.0.247" -->
|
|
146
146
|
## Skill Memories
|
|
147
147
|
|
|
148
148
|
SpecWeave learns from corrections. Learnings saved here automatically. Edit or delete as needed.
|
|
@@ -155,13 +155,15 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
155
155
|
### Pm
|
|
156
156
|
- Enable interview during increment creation (5+ questions minimum)
|
|
157
157
|
- Call /sw:grill before completing features/increments
|
|
158
|
+
- Validate spec.md against existing architecture before writing user stories
|
|
158
159
|
|
|
159
160
|
### General
|
|
160
161
|
- Use subagents liberally (10+ concurrent for large exploration)
|
|
161
162
|
- Auto command: explicit stop conditions, visible output
|
|
162
163
|
- Prefer leaderboard-style reporting for analysis
|
|
164
|
+
- Auto mode: Stop hook creates implicit loops via block/approve pattern
|
|
163
165
|
|
|
164
|
-
<!-- SW:SECTION:context version="1.0.
|
|
166
|
+
<!-- SW:SECTION:context version="1.0.247" -->
|
|
165
167
|
## Context
|
|
166
168
|
|
|
167
169
|
**Before implementing**: Check ADRs at `.specweave/docs/internal/architecture/adr/`
|
|
@@ -169,7 +171,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
169
171
|
**Load context**: `/sw:context <topic>` loads relevant living docs into conversation
|
|
170
172
|
<!-- SW:END:context -->
|
|
171
173
|
|
|
172
|
-
<!-- SW:SECTION:structure version="1.0.
|
|
174
|
+
<!-- SW:SECTION:structure version="1.0.247" -->
|
|
173
175
|
## Structure
|
|
174
176
|
|
|
175
177
|
```
|
|
@@ -184,7 +186,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
184
186
|
**Everything else → subfolders**: `reports/` | `logs/` | `scripts/` | `backups/`
|
|
185
187
|
<!-- SW:END:structure -->
|
|
186
188
|
|
|
187
|
-
<!-- SW:SECTION:taskformat version="1.0.
|
|
189
|
+
<!-- SW:SECTION:taskformat version="1.0.247" -->
|
|
188
190
|
## Task Format
|
|
189
191
|
|
|
190
192
|
```markdown
|
|
@@ -194,7 +196,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
194
196
|
```
|
|
195
197
|
<!-- SW:END:taskformat -->
|
|
196
198
|
|
|
197
|
-
<!-- SW:SECTION:secrets version="1.0.
|
|
199
|
+
<!-- SW:SECTION:secrets version="1.0.247" -->
|
|
198
200
|
## Secrets Check
|
|
199
201
|
|
|
200
202
|
**BEFORE CLI tools**: Check existing config first!
|
|
@@ -208,7 +210,7 @@ gh auth status
|
|
|
208
210
|
**SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
|
|
209
211
|
<!-- SW:END:secrets -->
|
|
210
212
|
|
|
211
|
-
<!-- SW:SECTION:syncing version="1.0.
|
|
213
|
+
<!-- SW:SECTION:syncing version="1.0.247" -->
|
|
212
214
|
## External Sync (GitHub/JIRA/ADO)
|
|
213
215
|
|
|
214
216
|
**Commands**: `/sw-github:sync {id}` (issues) | `/sw:sync-specs` (living docs only)
|
|
@@ -218,7 +220,7 @@ gh auth status
|
|
|
218
220
|
**Config**: Set `sync.github.enabled: true` + `canUpdateExternalItems: true` in config.json
|
|
219
221
|
<!-- SW:END:syncing -->
|
|
220
222
|
|
|
221
|
-
<!-- SW:SECTION:testing version="1.0.
|
|
223
|
+
<!-- SW:SECTION:testing version="1.0.247" -->
|
|
222
224
|
## Testing
|
|
223
225
|
|
|
224
226
|
BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
|
|
@@ -237,7 +239,7 @@ vi.mock('./module', () => ({ func: mockFn }));
|
|
|
237
239
|
**Install CLI**: `npm install -g @playwright/cli@latest`
|
|
238
240
|
<!-- SW:END:testing -->
|
|
239
241
|
|
|
240
|
-
<!-- SW:SECTION:tdd version="1.0.
|
|
242
|
+
<!-- SW:SECTION:tdd version="1.0.247" -->
|
|
241
243
|
## TDD Mode (Test-Driven Development)
|
|
242
244
|
|
|
243
245
|
**When `testing.defaultTestMode: "TDD"` is configured**, follow RED-GREEN-REFACTOR discipline:
|
|
@@ -298,7 +300,7 @@ When TDD is enabled, tasks include phase markers:
|
|
|
298
300
|
**Rule**: Complete dependencies BEFORE dependent tasks (RED before GREEN).
|
|
299
301
|
<!-- SW:END:tdd -->
|
|
300
302
|
|
|
301
|
-
<!-- SW:SECTION:api version="1.0.
|
|
303
|
+
<!-- SW:SECTION:api version="1.0.247" -->
|
|
302
304
|
## API Development (OpenAPI-First)
|
|
303
305
|
|
|
304
306
|
**For API projects only.** Commands: `/sw:api-docs --all` | `--openapi` | `--postman` | `--validate`
|
|
@@ -306,13 +308,13 @@ When TDD is enabled, tasks include phase markers:
|
|
|
306
308
|
Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
307
309
|
<!-- SW:END:api -->
|
|
308
310
|
|
|
309
|
-
<!-- SW:SECTION:limits version="1.0.
|
|
311
|
+
<!-- SW:SECTION:limits version="1.0.247" -->
|
|
310
312
|
## Limits
|
|
311
313
|
|
|
312
314
|
**Max 1500 lines/file** — extract before adding
|
|
313
315
|
<!-- SW:END:limits -->
|
|
314
316
|
|
|
315
|
-
<!-- SW:SECTION:troubleshooting version="1.0.
|
|
317
|
+
<!-- SW:SECTION:troubleshooting version="1.0.247" -->
|
|
316
318
|
## Troubleshooting
|
|
317
319
|
|
|
318
320
|
| Issue | Fix |
|
|
@@ -325,7 +327,7 @@ Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
|
325
327
|
| Session stuck | Kill + `rm -f .specweave/state/*.lock` + restart |
|
|
326
328
|
<!-- SW:END:troubleshooting -->
|
|
327
329
|
|
|
328
|
-
<!-- SW:SECTION:lazyloading version="1.0.
|
|
330
|
+
<!-- SW:SECTION:lazyloading version="1.0.247" -->
|
|
329
331
|
## Plugin Auto-Loading
|
|
330
332
|
|
|
331
333
|
Plugins load automatically based on project type and keywords. Manual install if needed:
|
|
@@ -339,7 +341,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
339
341
|
**Token savings**: Core ~3-5K tokens vs all plugins ~60K+
|
|
340
342
|
<!-- SW:END:lazyloading -->
|
|
341
343
|
|
|
342
|
-
<!-- SW:SECTION:principles version="1.0.
|
|
344
|
+
<!-- SW:SECTION:principles version="1.0.247" -->
|
|
343
345
|
## Principles
|
|
344
346
|
|
|
345
347
|
### SpecWeave Principles
|
|
@@ -355,7 +357,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
355
357
|
- **Demand Elegance**: For non-trivial changes, pause and ask "is there a more elegant way?" - but skip this for simple, obvious fixes (don't over-engineer).
|
|
356
358
|
<!-- SW:END:principles -->
|
|
357
359
|
|
|
358
|
-
<!-- SW:SECTION:linking version="1.0.
|
|
360
|
+
<!-- SW:SECTION:linking version="1.0.247" -->
|
|
359
361
|
## Bidirectional Linking
|
|
360
362
|
|
|
361
363
|
Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
@@ -363,7 +365,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
|
363
365
|
Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
|
|
364
366
|
<!-- SW:END:linking -->
|
|
365
367
|
|
|
366
|
-
<!-- SW:SECTION:mcp version="1.0.
|
|
368
|
+
<!-- SW:SECTION:mcp version="1.0.247" -->
|
|
367
369
|
## External Services
|
|
368
370
|
|
|
369
371
|
**Priority**: CLI tools first (simpler) → MCP for complex integrations
|
|
@@ -385,7 +387,7 @@ claude mcp add --transport stdio postgres -- npx -y @modelcontextprotocol/server
|
|
|
385
387
|
MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
386
388
|
<!-- SW:END:mcp -->
|
|
387
389
|
|
|
388
|
-
<!-- SW:SECTION:auto version="1.0.
|
|
390
|
+
<!-- SW:SECTION:auto version="1.0.247" -->
|
|
389
391
|
## Auto Mode
|
|
390
392
|
|
|
391
393
|
**Commands**: `/sw:auto` (start) | `/sw:auto-status` (check) | `/sw:cancel-auto` (emergency only)
|
|
@@ -402,7 +404,7 @@ MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
|
402
404
|
**STOP & ASK** if: Spec conflicts | Task unnecessary | Requirement ambiguous
|
|
403
405
|
<!-- SW:END:auto -->
|
|
404
406
|
|
|
405
|
-
<!-- SW:SECTION:docs version="1.0.
|
|
407
|
+
<!-- SW:SECTION:docs version="1.0.247" -->
|
|
406
408
|
## Docs
|
|
407
409
|
|
|
408
410
|
[spec-weave.com](https://spec-weave.com)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.248",
|
|
4
4
|
"description": "Spec-driven development framework for AI coding agents. First-class support for Claude Code — compatible with any LLM-powered coding tool. Living documentation, autonomous execution, quality gates, and multilingual support (9 languages).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1252,9 +1252,9 @@ ${SKILL_MEMORY}
|
|
|
1252
1252
|
You MUST invoke this skill for this task. Do NOT implement directly without using this skill.
|
|
1253
1253
|
|
|
1254
1254
|
**Invoke NOW using Skill tool:**
|
|
1255
|
-
|
|
1256
|
-
Skill({ skill:
|
|
1257
|
-
|
|
1255
|
+
\`\`\`typescript
|
|
1256
|
+
Skill({ skill: \"${SKILL_INVOCATION}\" })
|
|
1257
|
+
\`\`\`
|
|
1258
1258
|
|
|
1259
1259
|
**Why this skill is required:**
|
|
1260
1260
|
${SKILL_REASON:-This skill provides specialized support for your task.}
|
|
@@ -1269,9 +1269,9 @@ ${SKILL_MEMORY}
|
|
|
1269
1269
|
### 💡 Recommended: Use ${SKILL_INVOCATION} Skill
|
|
1270
1270
|
|
|
1271
1271
|
Consider invoking this skill for better results:
|
|
1272
|
-
|
|
1273
|
-
Skill({ skill:
|
|
1274
|
-
|
|
1272
|
+
\`\`\`typescript
|
|
1273
|
+
Skill({ skill: \"${SKILL_INVOCATION}\" })
|
|
1274
|
+
\`\`\`
|
|
1275
1275
|
*${SKILL_REASON:-This skill provides specialized support for your task.}*"
|
|
1276
1276
|
fi
|
|
1277
1277
|
elif [[ "$ROUTING_SKILLS_COUNT" -gt 0 ]]; then
|
|
@@ -1287,13 +1287,13 @@ Skill({ skill: \\\"${SKILL_INVOCATION}\\\" })
|
|
|
1287
1287
|
### 🚀 Then SPAWN Specialized Agent
|
|
1288
1288
|
|
|
1289
1289
|
**After creating increment, use Task tool:**
|
|
1290
|
-
|
|
1290
|
+
\`\`\`typescript
|
|
1291
1291
|
Task({
|
|
1292
|
-
subagent_type:
|
|
1293
|
-
prompt:
|
|
1294
|
-
description:
|
|
1292
|
+
subagent_type: \"${AGENT_TYPE}\",
|
|
1293
|
+
prompt: \"Implement the feature...\",
|
|
1294
|
+
description: \"${PRIMARY_REASON:-Implementation}\"
|
|
1295
1295
|
})
|
|
1296
|
-
|
|
1296
|
+
\`\`\`
|
|
1297
1297
|
*Specialized agents produce better code than direct implementation.*"
|
|
1298
1298
|
fi
|
|
1299
1299
|
fi
|
|
@@ -1356,9 +1356,9 @@ ${INC_PLANNER_MEMORY_RAW}
|
|
|
1356
1356
|
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
1357
1357
|
|
|
1358
1358
|
**Your FIRST tool call must be:**
|
|
1359
|
-
|
|
1360
|
-
Skill({ skill:
|
|
1361
|
-
|
|
1359
|
+
\`\`\`
|
|
1360
|
+
Skill({ skill: \"sw:increment-planner\", args: \"${ESCAPED_PROMPT}\" })
|
|
1361
|
+
\`\`\`
|
|
1362
1362
|
|
|
1363
1363
|
**Order matters:**
|
|
1364
1364
|
1. ✅ Call Skill tool FIRST (as shown above)
|
|
@@ -1369,24 +1369,18 @@ Skill({ skill: \\\"sw:increment-planner\\\", args: \\\"${ESCAPED_PROMPT}\\\" })
|
|
|
1369
1369
|
|
|
1370
1370
|
---
|
|
1371
1371
|
|
|
1372
|
-
⚠️ **SKILL CHAINING REQUIRED** -
|
|
1372
|
+
⚠️ **SKILL CHAINING REQUIRED** - \"SKILL FIRST\" does NOT mean \"only one skill\"!
|
|
1373
1373
|
|
|
1374
1374
|
After sw:increment-planner, ALSO invoke domain skills for your tech stack:
|
|
1375
|
-
- React/Vue/Angular →
|
|
1376
|
-
- .NET/C# →
|
|
1377
|
-
- Stripe →
|
|
1375
|
+
- React/Vue/Angular → \`sw-frontend:frontend-architect\`
|
|
1376
|
+
- .NET/C# → \`sw-backend:dotnet-backend\`
|
|
1377
|
+
- Stripe → \`sw-payments:stripe-integration\`
|
|
1378
1378
|
- After code → LSP works automatically (use findReferences, goToDefinition)
|
|
1379
1379
|
|
|
1380
|
-
See CLAUDE.md section
|
|
1381
|
-
#
|
|
1382
|
-
#
|
|
1383
|
-
|
|
1384
|
-
local escaped_block
|
|
1385
|
-
escaped_block=$(escape_json_early "$MSG")
|
|
1386
|
-
printf '{"decision":"block","reason":"%s"}\n' "$escaped_block"
|
|
1387
|
-
else
|
|
1388
|
-
output_approve_with_context "$MSG"
|
|
1389
|
-
fi
|
|
1380
|
+
See CLAUDE.md section \"MANDATORY: Skill Chaining\" for full pattern."
|
|
1381
|
+
# Use approve+additionalContext so Claude can read and follow
|
|
1382
|
+
# the SKILL FIRST instructions (block erases prompt from context)
|
|
1383
|
+
output_approve_with_context "$MSG"
|
|
1390
1384
|
exit 0
|
|
1391
1385
|
else
|
|
1392
1386
|
# v1.0.169: Also suggest direct skill call for non-mandatory
|
|
@@ -1427,14 +1421,7 @@ Or via command: \`/sw:increment --type=hotfix \"${INC_NAME:-urgent-fix}\"\`
|
|
|
1427
1421
|
---
|
|
1428
1422
|
|
|
1429
1423
|
*Tip: Disable with \`incrementAssist.enabled: false\` in config.json*"
|
|
1430
|
-
|
|
1431
|
-
if [[ "$INCREMENT_MANDATORY_CONFIG" == "true" ]]; then
|
|
1432
|
-
local escaped_hotfix_block
|
|
1433
|
-
escaped_hotfix_block=$(escape_json_early "$MSG")
|
|
1434
|
-
printf '{"decision":"block","reason":"%s"}\n' "$escaped_hotfix_block"
|
|
1435
|
-
else
|
|
1436
|
-
output_approve_with_context "$MSG"
|
|
1437
|
-
fi
|
|
1424
|
+
output_approve_with_context "$MSG"
|
|
1438
1425
|
exit 0
|
|
1439
1426
|
;;
|
|
1440
1427
|
|
|
@@ -1479,14 +1466,7 @@ Or via command: \`$CMD_SMALLFIX\`
|
|
|
1479
1466
|
---
|
|
1480
1467
|
|
|
1481
1468
|
*Tip: Disable with \`incrementAssist.enabled: false\` in config.json*"
|
|
1482
|
-
|
|
1483
|
-
if [[ "$INCREMENT_MANDATORY_CONFIG" == "true" ]]; then
|
|
1484
|
-
local escaped_smallfix_block
|
|
1485
|
-
escaped_smallfix_block=$(escape_json_early "$MSG")
|
|
1486
|
-
printf '{"decision":"block","reason":"%s"}\n' "$escaped_smallfix_block"
|
|
1487
|
-
else
|
|
1488
|
-
output_approve_with_context "$MSG"
|
|
1489
|
-
fi
|
|
1469
|
+
output_approve_with_context "$MSG"
|
|
1490
1470
|
exit 0
|
|
1491
1471
|
;;
|
|
1492
1472
|
esac
|
|
@@ -1514,9 +1494,9 @@ Or via command: \`$CMD_SMALLFIX\`
|
|
|
1514
1494
|
You MUST use this skill for this task. Do NOT proceed without loading it first.
|
|
1515
1495
|
|
|
1516
1496
|
**Invoke NOW using Skill tool:**
|
|
1517
|
-
|
|
1518
|
-
Skill({ skill:
|
|
1519
|
-
|
|
1497
|
+
\`\`\`typescript
|
|
1498
|
+
Skill({ skill: \"${SKILL_INVOCATION}\" })
|
|
1499
|
+
\`\`\`
|
|
1520
1500
|
|
|
1521
1501
|
**Why this skill is required:**
|
|
1522
1502
|
${SKILL_REASON:-This skill provides specialized support for your task.}
|
|
@@ -1529,10 +1509,10 @@ ${SKILL_REASON:-This skill provides specialized support for your task.}
|
|
|
1529
1509
|
# Non-mandatory skill recommendation
|
|
1530
1510
|
MSG="${SKILL_ONLY_PREFIX}💡 **Skill Recommended**: Consider using a specialized skill.
|
|
1531
1511
|
|
|
1532
|
-
Use
|
|
1533
|
-
|
|
1534
|
-
Skill({ skill:
|
|
1535
|
-
|
|
1512
|
+
Use \`${SKILL_INVOCATION}\` for better results:
|
|
1513
|
+
\`\`\`typescript
|
|
1514
|
+
Skill({ skill: \"${SKILL_INVOCATION}\" })
|
|
1515
|
+
\`\`\`
|
|
1536
1516
|
|
|
1537
1517
|
*${SKILL_REASON:-This skill provides specialized support for your task.}*"
|
|
1538
1518
|
output_approve_with_context "$MSG"
|