@slycode/slycode 0.2.23 → 0.2.24
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/scripts/scaffold.js +40 -1
- package/dist/store/actions/approve.md +1 -1
- package/dist/store/actions/challenge-implementation.md +149 -0
- package/dist/store/actions/challenge.md +119 -0
- package/dist/store/actions/checkpoint.md +1 -1
- package/dist/store/actions/context.md +2 -2
- package/dist/store/actions/implement.md +1 -1
- package/dist/store/actions/show-card.md +2 -2
- package/dist/store/actions/summarize.md +2 -2
- package/dist/store/actions/test-review.md +1 -1
- package/dist/web/.next/BUILD_ID +1 -1
- package/dist/web/.next/build-manifest.json +2 -2
- package/dist/web/.next/server/app/_global-error.html +2 -2
- package/dist/web/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.html +1 -1
- package/dist/web/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/.next/server/chunks/[root-of-the-server]__92f81907._.js +1 -1
- package/dist/web/.next/server/chunks/[root-of-the-server]__a259539f._.js +1 -1
- package/dist/web/.next/server/chunks/ssr/src_components_Dashboard_tsx_efc4dc27._.js +1 -1
- package/dist/web/.next/server/pages/404.html +1 -1
- package/dist/web/.next/server/pages/500.html +2 -2
- package/dist/web/.next/static/chunks/{3859477038c381ad.js → f566a4b05a9cd6ba.js} +1 -1
- package/dist/web/src/app/api/changelog/route.ts +3 -3
- package/dist/web/src/app/api/terminal-classes/route.ts +43 -4
- package/dist/web/src/components/ChangelogModal.tsx +0 -1
- package/dist/web/tsconfig.tsbuildinfo +1 -1
- package/lib/cli/sync.d.ts +7 -0
- package/lib/cli/sync.d.ts.map +1 -1
- package/lib/cli/sync.js +25 -0
- package/lib/cli/sync.js.map +1 -1
- package/lib/cli/update.d.ts.map +1 -1
- package/lib/cli/update.js +9 -0
- package/lib/cli/update.js.map +1 -1
- package/package.json +1 -1
- package/templates/changelog.json +26 -0
- package/templates/kanban-seed.json +1 -1
- package/templates/store/actions/approve.md +1 -1
- package/templates/store/actions/challenge-implementation.md +149 -0
- package/templates/store/actions/challenge.md +119 -0
- package/templates/store/actions/checkpoint.md +1 -1
- package/templates/store/actions/context.md +2 -2
- package/templates/store/actions/implement.md +1 -1
- package/templates/store/actions/show-card.md +2 -2
- package/templates/store/actions/summarize.md +2 -2
- package/templates/store/actions/test-review.md +1 -1
- package/templates/terminal-classes.json +51 -0
- package/templates/updates/actions/approve.md +1 -1
- package/templates/updates/actions/challenge-implementation.md +149 -0
- package/templates/updates/actions/challenge.md +119 -0
- package/templates/updates/actions/checkpoint.md +1 -1
- package/templates/updates/actions/context.md +2 -2
- package/templates/updates/actions/implement.md +1 -1
- package/templates/updates/actions/show-card.md +2 -2
- package/templates/updates/actions/summarize.md +2 -2
- package/templates/updates/actions/test-review.md +1 -1
- /package/dist/web/.next/static/{aN-jqftQVvSm0qVskLybH → O1Ine2WtyXv6EQJcwHyOV}/_buildManifest.js +0 -0
- /package/dist/web/.next/static/{aN-jqftQVvSm0qVskLybH → O1Ine2WtyXv6EQJcwHyOV}/_clientMiddlewareManifest.json +0 -0
- /package/dist/web/.next/static/{aN-jqftQVvSm0qVskLybH → O1Ine2WtyXv6EQJcwHyOV}/_ssgManifest.js +0 -0
package/lib/cli/sync.d.ts
CHANGED
|
@@ -20,5 +20,12 @@ export declare function refreshUpdates(workspace: string): RefreshResult;
|
|
|
20
20
|
export declare function refreshProviders(workspace: string): {
|
|
21
21
|
updated: boolean;
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Seed terminal-classes.json from package templates if missing in workspace.
|
|
25
|
+
* This ensures existing installations get the file on first sync/update.
|
|
26
|
+
*/
|
|
27
|
+
export declare function refreshTerminalClasses(workspace: string): {
|
|
28
|
+
seeded: boolean;
|
|
29
|
+
};
|
|
23
30
|
export declare function sync(_args: string[]): Promise<void>;
|
|
24
31
|
//# sourceMappingURL=sync.d.ts.map
|
package/lib/cli/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AA6BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAoD/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA8BxE;AAED,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AA6BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAoD/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA8BxE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAe7E;AAED,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzD"}
|
package/lib/cli/sync.js
CHANGED
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.refreshUpdates = refreshUpdates;
|
|
37
37
|
exports.refreshProviders = refreshProviders;
|
|
38
|
+
exports.refreshTerminalClasses = refreshTerminalClasses;
|
|
38
39
|
exports.sync = sync;
|
|
39
40
|
const path = __importStar(require("path"));
|
|
40
41
|
const fs = __importStar(require("fs"));
|
|
@@ -145,6 +146,25 @@ function refreshProviders(workspace) {
|
|
|
145
146
|
return { updated: false };
|
|
146
147
|
}
|
|
147
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Seed terminal-classes.json from package templates if missing in workspace.
|
|
151
|
+
* This ensures existing installations get the file on first sync/update.
|
|
152
|
+
*/
|
|
153
|
+
function refreshTerminalClasses(workspace) {
|
|
154
|
+
const workspaceFile = path.join(workspace, 'documentation', 'terminal-classes.json');
|
|
155
|
+
if (fs.existsSync(workspaceFile)) {
|
|
156
|
+
return { seeded: false };
|
|
157
|
+
}
|
|
158
|
+
const packageDir = (0, workspace_1.resolvePackageDir)(workspace);
|
|
159
|
+
if (!packageDir)
|
|
160
|
+
return { seeded: false };
|
|
161
|
+
const templateFile = path.join(packageDir, 'templates', 'terminal-classes.json');
|
|
162
|
+
if (!fs.existsSync(templateFile))
|
|
163
|
+
return { seeded: false };
|
|
164
|
+
fs.mkdirSync(path.join(workspace, 'documentation'), { recursive: true });
|
|
165
|
+
fs.copyFileSync(templateFile, workspaceFile);
|
|
166
|
+
return { seeded: true };
|
|
167
|
+
}
|
|
148
168
|
async function sync(_args) {
|
|
149
169
|
const workspace = (0, workspace_1.resolveWorkspaceOrExit)();
|
|
150
170
|
console.log('Refreshing skill updates...');
|
|
@@ -162,5 +182,10 @@ async function sync(_args) {
|
|
|
162
182
|
console.log('');
|
|
163
183
|
console.log(`Refreshed ${result.refreshed} skill update(s).`);
|
|
164
184
|
}
|
|
185
|
+
// Seed terminal-classes.json if missing
|
|
186
|
+
const tcResult = refreshTerminalClasses(workspace);
|
|
187
|
+
if (tcResult.seeded) {
|
|
188
|
+
console.log(' ✓ Seeded terminal-classes.json');
|
|
189
|
+
}
|
|
165
190
|
}
|
|
166
191
|
//# sourceMappingURL=sync.js.map
|
package/lib/cli/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,wCAoDC;AAMD,4CA8BC;AAED,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
|
package/lib/cli/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAkEA,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAkEA,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E3D"}
|
package/lib/cli/update.js
CHANGED
|
@@ -137,6 +137,12 @@ async function update(_args) {
|
|
|
137
137
|
console.log(' ✓ Providers updated');
|
|
138
138
|
console.log('');
|
|
139
139
|
}
|
|
140
|
+
// Step 2c: Seed terminal-classes.json if missing
|
|
141
|
+
const tcResult = (0, sync_1.refreshTerminalClasses)(workspace);
|
|
142
|
+
if (tcResult.seeded) {
|
|
143
|
+
console.log(' ✓ Seeded terminal-classes.json');
|
|
144
|
+
console.log('');
|
|
145
|
+
}
|
|
140
146
|
// Step 3: Restart services using the detected run mode
|
|
141
147
|
if (runMode !== 'none') {
|
|
142
148
|
switch (runMode) {
|
|
@@ -171,6 +177,9 @@ async function update(_args) {
|
|
|
171
177
|
if (providersResult.updated) {
|
|
172
178
|
console.log(' Providers refreshed.');
|
|
173
179
|
}
|
|
180
|
+
if (tcResult.seeded) {
|
|
181
|
+
console.log(' Terminal classes seeded.');
|
|
182
|
+
}
|
|
174
183
|
if (runMode !== 'none') {
|
|
175
184
|
console.log(` Services restarted (${runMode}).`);
|
|
176
185
|
}
|
package/lib/cli/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/templates/changelog.json
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.2.24",
|
|
4
|
+
"date": "2026-04-11",
|
|
5
|
+
"changes": [
|
|
6
|
+
{
|
|
7
|
+
"type": "feature",
|
|
8
|
+
"description": "Seed terminal-classes.json on sync and update for existing workspaces"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "improvement",
|
|
12
|
+
"description": "Scaffold includes terminal-classes.json in new projects"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "improvement",
|
|
16
|
+
"description": "Terminal classes API hardening and error handling"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "bugfix",
|
|
20
|
+
"description": "Minor action priority and metadata fixes across store actions"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "feature",
|
|
24
|
+
"description": "Cross-agent challenge actions: send designs or implementations to another AI provider for adversarial review"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
2
28
|
{
|
|
3
29
|
"version": "0.2.23",
|
|
4
30
|
"date": "2026-04-09",
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: challenge-implementation
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
label: "Challenge Impl"
|
|
5
|
+
description: "Send implementation to another AI provider for adversarial code review and methodology analysis"
|
|
6
|
+
group: "Card Actions"
|
|
7
|
+
placement: both
|
|
8
|
+
scope: global
|
|
9
|
+
classes:
|
|
10
|
+
testing: 30
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
{{cardContext}}
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Your Task — Challenge Implementation
|
|
18
|
+
|
|
19
|
+
You are initiating a **cross-agent implementation challenge** for card `{{card.id}}`. The goal is to send the completed implementation to a different AI provider for adversarial code review and methodology analysis, then synthesize their feedback.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### Phase 1 — Gather Context
|
|
24
|
+
|
|
25
|
+
1. **Read the full card details** (notes, problems, checklist):
|
|
26
|
+
```bash
|
|
27
|
+
sly-kanban show {{card.id}}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. **Prime area context** — use `/context-priming` with the card's **Areas** to understand the codebase architecture and patterns.
|
|
31
|
+
|
|
32
|
+
3. **Read the design document** (if linked):
|
|
33
|
+
{{#if card.design_ref}}
|
|
34
|
+
Read `{{card.design_ref}}`
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
4. **Read the feature spec** (if linked):
|
|
38
|
+
{{#if card.feature_ref}}
|
|
39
|
+
Read `{{card.feature_ref}}`
|
|
40
|
+
{{/if}}
|
|
41
|
+
|
|
42
|
+
5. **Identify the changed files** — use git to find what was changed for this card:
|
|
43
|
+
```bash
|
|
44
|
+
git log --oneline --all | head -20
|
|
45
|
+
```
|
|
46
|
+
Look at recent commits related to this card's work. Read the key files that were added or modified.
|
|
47
|
+
|
|
48
|
+
6. **Read all card notes** — these contain implementation context and prior agent observations.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Phase 2 — Determine Target Provider
|
|
53
|
+
|
|
54
|
+
Send the challenge to a **different** provider than yourself.
|
|
55
|
+
|
|
56
|
+
- If you are **Claude** → send to `codex`
|
|
57
|
+
- If you are **Codex** → send to `claude`
|
|
58
|
+
- If you are **Gemini** → try `claude` first; if that fails, try `codex`
|
|
59
|
+
|
|
60
|
+
To determine who you are: Claude models start with "claude-", Codex/OpenAI models are o3, o4-mini, codex-mini, etc., Gemini models start with "gemini-".
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### Phase 3 — Prepare and Send
|
|
65
|
+
|
|
66
|
+
Before sending, optionally add a context note:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
sly-kanban notes {{card.id}} add "Implementation challenge context: <summary of what was built, key files, architectural decisions>" --agent "<your-provider-name>"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Now construct a detailed prompt for the other agent. The prompt must include:
|
|
73
|
+
|
|
74
|
+
1. **The design document content** (paste inline) so they know what was intended
|
|
75
|
+
2. **The feature spec content** if one exists (paste inline)
|
|
76
|
+
3. **The key implementation files** — paste the actual code of the most important changed/added files. Focus on the core logic, not boilerplate.
|
|
77
|
+
4. **A file list** of everything that was changed, so they can request more if needed
|
|
78
|
+
5. **Key notes from the card** that explain decisions made during implementation
|
|
79
|
+
6. **Clear instructions** asking the other agent to:
|
|
80
|
+
|
|
81
|
+
**Code Quality Review:**
|
|
82
|
+
- Analyse the code for bugs, logic errors, and edge cases
|
|
83
|
+
- Evaluate error handling and failure modes
|
|
84
|
+
- Check for security concerns (injection, XSS, auth gaps, data leaks)
|
|
85
|
+
- Assess performance — unnecessary loops, missing caching, N+1 queries, memory leaks
|
|
86
|
+
- Review naming, structure, and readability
|
|
87
|
+
|
|
88
|
+
**Methodology Review:**
|
|
89
|
+
- Does the implementation match the design intent? Any drift?
|
|
90
|
+
- Are the chosen patterns and abstractions appropriate?
|
|
91
|
+
- Is there unnecessary complexity that could be simplified?
|
|
92
|
+
- Are there better approaches that would achieve the same goals?
|
|
93
|
+
- Is the code testable? Are there untested critical paths?
|
|
94
|
+
- Does it follow the existing codebase conventions?
|
|
95
|
+
|
|
96
|
+
**Perspective Analysis:**
|
|
97
|
+
- Review from the perspective of a future maintainer reading this code for the first time
|
|
98
|
+
- Consider what happens when requirements change — how rigid or flexible is this?
|
|
99
|
+
- Think about what could go wrong in production under real usage patterns
|
|
100
|
+
|
|
101
|
+
- Use `sly-kanban respond <response-id> "..."` to send back a structured response
|
|
102
|
+
|
|
103
|
+
**Send the prompt:**
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
sly-kanban prompt {{card.id}} "<your constructed prompt>" --provider <target-provider> --wait --timeout 180
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Use `--timeout 180` (3 minutes). Do **not** use `--fresh`.
|
|
110
|
+
|
|
111
|
+
If the prompt times out, tell the user you're waiting — the response will arrive asynchronously.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### Phase 4 — Synthesize Feedback
|
|
116
|
+
|
|
117
|
+
When the response arrives, critically evaluate each point:
|
|
118
|
+
|
|
119
|
+
1. **Categorise each finding** as:
|
|
120
|
+
- **Valid bug/issue** — real problem that should be fixed before approval
|
|
121
|
+
- **Valid improvement** — correct observation, worth doing but not blocking
|
|
122
|
+
- **Disagree** — you believe the implementation is correct, explain why
|
|
123
|
+
- **Needs discussion** — legitimate trade-off, user should decide
|
|
124
|
+
|
|
125
|
+
2. **For valid bugs**: Fix them immediately or log as problems:
|
|
126
|
+
```bash
|
|
127
|
+
sly-kanban problem {{card.id}} add "description" --severity <minor|major|critical>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
3. **For valid improvements**: Propose the changes. If they're small, offer to make them now.
|
|
131
|
+
|
|
132
|
+
4. **For disagreements**: Explain your reasoning clearly.
|
|
133
|
+
|
|
134
|
+
5. **For ambiguous points**: Present both perspectives and ask the user.
|
|
135
|
+
|
|
136
|
+
6. **Add a summary note** to the card:
|
|
137
|
+
```bash
|
|
138
|
+
sly-kanban notes {{card.id}} add "Implementation challenge complete: <N> bugs found, <N> improvements suggested, <N> disagreements, <N> need user input." --agent "<your-provider-name>"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
7. **Present the synthesis to the user** with:
|
|
142
|
+
- Any bugs that need fixing (blockers for approval)
|
|
143
|
+
- Improvements worth making (non-blocking)
|
|
144
|
+
- Disagreements with your reasoning
|
|
145
|
+
- Open questions for the user
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
**Start now** — begin Phase 1.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: challenge
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
label: "Challenge"
|
|
5
|
+
description: "Send design to another AI provider for adversarial review and synthesis"
|
|
6
|
+
group: "Card Actions"
|
|
7
|
+
placement: both
|
|
8
|
+
scope: global
|
|
9
|
+
classes:
|
|
10
|
+
design: 50
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
{{cardContext}}
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Your Task — Challenge Design
|
|
18
|
+
|
|
19
|
+
You are initiating a **cross-agent design challenge** for card `{{card.id}}`. The goal is to send the current design work to a different AI provider for adversarial review, then synthesize their feedback to strengthen the design.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### Phase 1 — Gather Context
|
|
24
|
+
|
|
25
|
+
1. **Read the full card details** (notes, problems, checklist):
|
|
26
|
+
```bash
|
|
27
|
+
sly-kanban show {{card.id}}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. **Read the design document** (if linked):
|
|
31
|
+
{{#if card.design_ref}}
|
|
32
|
+
Read `{{card.design_ref}}`
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
35
|
+
3. **Read the feature spec** (if linked):
|
|
36
|
+
{{#if card.feature_ref}}
|
|
37
|
+
Read `{{card.feature_ref}}`
|
|
38
|
+
{{/if}}
|
|
39
|
+
|
|
40
|
+
4. **Read all card notes** — these contain cross-agent communication and prior context.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### Phase 2 — Determine Target Provider
|
|
45
|
+
|
|
46
|
+
You need to send the challenge to a **different** provider than yourself.
|
|
47
|
+
|
|
48
|
+
- If you are **Claude** → send to `codex`
|
|
49
|
+
- If you are **Codex** → send to `claude`
|
|
50
|
+
- If you are **Gemini** → try `claude` first; if that fails (no session / error), try `codex`
|
|
51
|
+
|
|
52
|
+
To determine who you are: check your model identity. Claude models start with "claude-", Codex models are OpenAI (e.g., o3, o4-mini, codex-mini), Gemini models start with "gemini-".
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### Phase 3 — Prepare and Send
|
|
57
|
+
|
|
58
|
+
Before sending the prompt, you may optionally add a note to the card summarising key context that the other agent should know:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
sly-kanban notes {{card.id}} add "Challenge context: <brief summary of design state, key decisions, open questions>" --agent "<your-provider-name>"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Now construct a detailed prompt for the other agent. The prompt must include:
|
|
65
|
+
|
|
66
|
+
1. **The full design document content** (paste it inline — the other agent may not have access to the file)
|
|
67
|
+
2. **The feature spec content** if one exists (paste inline)
|
|
68
|
+
3. **Key notes from the card** that provide relevant context
|
|
69
|
+
4. **Clear instructions** asking the other agent to:
|
|
70
|
+
- Review the design from as many perspectives as seem necessary (technical feasibility, user experience, edge cases, security, performance, simplicity, maintainability, etc.)
|
|
71
|
+
- State what it **agrees with** and why
|
|
72
|
+
- State what it **disagrees with** or sees as risky, with specific reasoning
|
|
73
|
+
- Suggest concrete improvements or alternatives where it sees weakness
|
|
74
|
+
- Call out any assumptions that seem unvalidated
|
|
75
|
+
- Use `sly-kanban respond <response-id> "..."` to send back a structured response
|
|
76
|
+
|
|
77
|
+
**Send the prompt:**
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
sly-kanban prompt {{card.id}} "<your constructed prompt>" --provider <target-provider> --wait --timeout 180
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Use `--timeout 180` (3 minutes) to allow thorough analysis. Do **not** use `--fresh` — send to the existing session.
|
|
84
|
+
|
|
85
|
+
If the prompt times out, that's OK — the response will arrive asynchronously. Tell the user you're waiting and check back. The response will eventually come through.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Phase 4 — Synthesize Feedback
|
|
90
|
+
|
|
91
|
+
When the response arrives, **do not blindly adopt the suggestions**. Instead:
|
|
92
|
+
|
|
93
|
+
1. **Categorise each point** as:
|
|
94
|
+
- **Agree** — valid concern, should be addressed
|
|
95
|
+
- **Disagree** — you believe the current design is correct, explain why
|
|
96
|
+
- **Needs discussion** — legitimate tension, the user should decide
|
|
97
|
+
|
|
98
|
+
2. **For agreed points**: Propose specific changes to the design document.
|
|
99
|
+
|
|
100
|
+
3. **For disagreed points**: Explain your reasoning for why the current approach is sound.
|
|
101
|
+
|
|
102
|
+
4. **For ambiguous points**: Present both perspectives clearly and ask the user what they'd like to do.
|
|
103
|
+
|
|
104
|
+
5. **Update the design doc** with an "## External Review" section capturing:
|
|
105
|
+
- Who reviewed (which provider)
|
|
106
|
+
- Key agreements and changes made
|
|
107
|
+
- Key disagreements and your reasoning
|
|
108
|
+
- Open questions surfaced to the user
|
|
109
|
+
|
|
110
|
+
6. **Add a summary note** to the card:
|
|
111
|
+
```bash
|
|
112
|
+
sly-kanban notes {{card.id}} add "Challenge review complete: <N> points agreed, <N> disagreed, <N> need user input. Design doc updated with External Review section." --agent "<your-provider-name>"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
7. **Present the synthesis to the user** with clear recommendations and any decisions that need their input.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
**Start now** — begin Phase 1.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./terminal-classes.schema.json",
|
|
3
|
+
"version": "1.0",
|
|
4
|
+
"classes": [
|
|
5
|
+
{
|
|
6
|
+
"id": "global-terminal",
|
|
7
|
+
"name": "Global Terminal",
|
|
8
|
+
"description": "Terminal on the dashboard screen"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "project-terminal",
|
|
12
|
+
"name": "Project Terminal",
|
|
13
|
+
"description": "Terminal panel at the bottom of a project view"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "backlog",
|
|
17
|
+
"name": "Backlog",
|
|
18
|
+
"description": "Card terminals in the Backlog stage"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "design",
|
|
22
|
+
"name": "Design",
|
|
23
|
+
"description": "Card terminals in the Design stage"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "implementation",
|
|
27
|
+
"name": "Implementation",
|
|
28
|
+
"description": "Card terminals in the Implementation stage"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "testing",
|
|
32
|
+
"name": "Testing",
|
|
33
|
+
"description": "Card terminals in the Testing stage"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "done",
|
|
37
|
+
"name": "Done",
|
|
38
|
+
"description": "Card terminals in the Done stage"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "automation",
|
|
42
|
+
"name": "Automation",
|
|
43
|
+
"description": "Card terminals for automation cards"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "action-assistant",
|
|
47
|
+
"name": "Action Assistant",
|
|
48
|
+
"description": "AI assistant in the Sly Action Configuration modal"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|