@rse/ase 0.0.53 → 0.0.55
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/dst/ase-config.js +8 -18
- package/dst/ase-diagram.js +1 -1
- package/dst/ase-hook.js +4 -3
- package/dst/ase-service.js +4 -4
- package/dst/ase-setup.js +67 -110
- package/dst/ase-statusline.js +1 -1
- package/dst/ase-task.js +4 -3
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +2 -0
- package/plugin/skills/ase-code-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +1 -1
- package/plugin/skills/ase-code-explain/SKILL.md +2 -0
- package/plugin/skills/ase-code-insight/SKILL.md +3 -1
- package/plugin/skills/ase-code-lint/SKILL.md +1 -1
- package/plugin/skills/ase-code-resolve/SKILL.md +1 -1
- package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
- package/plugin/skills/ase-meta-changes/SKILL.md +133 -62
- package/plugin/skills/ase-meta-commit/SKILL.md +19 -10
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -0
- package/plugin/skills/ase-meta-quorum/SKILL.md +9 -1
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-why/SKILL.md +2 -0
- package/plugin/skills/ase-task-delete/SKILL.md +3 -1
- package/plugin/skills/ase-task-edit/SKILL.md +2 -0
- package/plugin/skills/ase-task-implement/SKILL.md +2 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +2 -0
- package/plugin/skills/ase-task-reboot/SKILL.md +3 -1
- package/plugin/skills/ase-task-rename/SKILL.md +3 -0
- package/plugin/skills/ase-task-view/SKILL.md +3 -1
- package/plugin/commands/ase-code-lint/complete.md +0 -9
- package/plugin/commands/ase-code-lint/explain.md +0 -9
- package/plugin/commands/ase-code-lint/nope.md +0 -11
- package/plugin/commands/ase-code-lint/reassess.md +0 -15
- package/plugin/commands/ase-code-lint/recheck.md +0 -9
- package/plugin/commands/ase-code-lint/refine.md +0 -9
package/dst/ase-config.js
CHANGED
|
@@ -391,19 +391,9 @@ export class Config {
|
|
|
391
391
|
return this.docs[this.target].doc.contents;
|
|
392
392
|
const segs = this.resolveKey(key).split(".");
|
|
393
393
|
for (let i = this.docs.length - 1; i >= 0; i--) {
|
|
394
|
-
const
|
|
395
|
-
if (
|
|
396
|
-
return
|
|
397
|
-
}
|
|
398
|
-
return undefined;
|
|
399
|
-
}
|
|
400
|
-
/* retrieve the effective value together with the scope it came from */
|
|
401
|
-
getWithOrigin(key) {
|
|
402
|
-
const segs = this.resolveKey(key).split(".");
|
|
403
|
-
for (let i = this.docs.length - 1; i >= 0; i--) {
|
|
404
|
-
const v = this.docs[i].doc.getIn(segs);
|
|
405
|
-
if (v !== undefined)
|
|
406
|
-
return { value: v, scope: this.docs[i].scope };
|
|
394
|
+
const node = this.docs[i].doc.getIn(segs);
|
|
395
|
+
if (node !== undefined)
|
|
396
|
+
return node;
|
|
407
397
|
}
|
|
408
398
|
return undefined;
|
|
409
399
|
}
|
|
@@ -429,9 +419,9 @@ export class Config {
|
|
|
429
419
|
for (const k of keys) {
|
|
430
420
|
const segs = k.split(".");
|
|
431
421
|
for (let i = this.docs.length - 1; i >= 0; i--) {
|
|
432
|
-
const
|
|
433
|
-
if (
|
|
434
|
-
result.push({ key: k, value:
|
|
422
|
+
const node = this.docs[i].doc.getIn(segs);
|
|
423
|
+
if (node !== undefined) {
|
|
424
|
+
result.push({ key: k, value: node, scope: this.docs[i].scope });
|
|
435
425
|
break;
|
|
436
426
|
}
|
|
437
427
|
}
|
|
@@ -556,8 +546,8 @@ export default class ConfigCommand {
|
|
|
556
546
|
style: { head: ["blue"] }
|
|
557
547
|
});
|
|
558
548
|
for (const e of cfg.entries()) {
|
|
559
|
-
const
|
|
560
|
-
table.push([e.key, String(
|
|
549
|
+
const val = isScalar(e.value) ? e.value.value : e.value;
|
|
550
|
+
table.push([e.key, String(val), Config.scopeLabel(e.scope)]);
|
|
561
551
|
}
|
|
562
552
|
process.stdout.write(`${table.toString()}\n`);
|
|
563
553
|
});
|
package/dst/ase-diagram.js
CHANGED
|
@@ -126,7 +126,7 @@ export class Diagram {
|
|
|
126
126
|
let mode = "none";
|
|
127
127
|
/* attempt 1: query environment variable (explicitly) */
|
|
128
128
|
if (process.env.ASE_TERM_COLORS !== undefined)
|
|
129
|
-
if (
|
|
129
|
+
if (/^(?:none|ansi16|ansi256)$/.test(process.env.ASE_TERM_COLORS))
|
|
130
130
|
mode = process.env.ASE_TERM_COLORS;
|
|
131
131
|
/* attempt 2: query stdout */
|
|
132
132
|
if (mode === "none" && process.stdout.isTTY) {
|
package/dst/ase-hook.js
CHANGED
|
@@ -140,9 +140,6 @@ export default class HookCommand {
|
|
|
140
140
|
/* establish config context (session-scoped only if a valid sessionId is present) */
|
|
141
141
|
const hasSession = this.isValidSessionId(sessionId);
|
|
142
142
|
const cfg = new Config("config", configSchema, this.log, hasSession ? parseScope(`session:${sessionId}`) : parseScope(undefined));
|
|
143
|
-
cfg.lock(() => {
|
|
144
|
-
cfg.read();
|
|
145
|
-
});
|
|
146
143
|
/* determine task id (only persist when scoped to a real session) */
|
|
147
144
|
const taskId = process.env.ASE_TASK_ID ?? "default";
|
|
148
145
|
if (hasSession)
|
|
@@ -151,6 +148,10 @@ export default class HookCommand {
|
|
|
151
148
|
cfg.set("agent.task", taskId);
|
|
152
149
|
cfg.write();
|
|
153
150
|
});
|
|
151
|
+
else
|
|
152
|
+
cfg.lock(() => {
|
|
153
|
+
cfg.read();
|
|
154
|
+
});
|
|
154
155
|
/* initialize agent activity status */
|
|
155
156
|
this.writeAgentStatus("ready");
|
|
156
157
|
/* determine project id */
|
package/dst/ase-service.js
CHANGED
|
@@ -140,10 +140,10 @@ export class Service {
|
|
|
140
140
|
const n = Math.min(CHUNK, pos);
|
|
141
141
|
pos -= n;
|
|
142
142
|
fs.readSync(fd, buf, 0, n, pos);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
for (let i = 0; i <
|
|
146
|
-
if (
|
|
143
|
+
const chunk = buf.toString("utf8", 0, n);
|
|
144
|
+
tail = chunk + tail;
|
|
145
|
+
for (let i = 0; i < chunk.length; i++)
|
|
146
|
+
if (chunk.charCodeAt(i) === 10)
|
|
147
147
|
count++;
|
|
148
148
|
}
|
|
149
149
|
const all = tail.split("\n").filter((l) => l.length > 0);
|
package/dst/ase-setup.js
CHANGED
|
@@ -397,30 +397,23 @@ export default class SetupCommand {
|
|
|
397
397
|
server: "chat-openai-chatgpt",
|
|
398
398
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
399
399
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
400
|
-
if (action === "activate")
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
400
|
+
if (action === "activate")
|
|
401
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
402
|
+
type: "stdio", command: [
|
|
403
|
+
"npx", "-y", "mcp-to-openai",
|
|
404
|
+
"--service", spec.name,
|
|
405
|
+
"--mcp-tool", "query",
|
|
406
|
+
...(envKey === "OPENROUTER" ? [
|
|
407
407
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
408
408
|
"--openai-api", "completion",
|
|
409
409
|
"--openai-model", "openai/gpt-5.5"
|
|
410
|
-
]
|
|
411
|
-
});
|
|
412
|
-
else
|
|
413
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
414
|
-
type: "stdio", command: [
|
|
415
|
-
"npx", "-y", "mcp-to-openai",
|
|
416
|
-
"--service", spec.name,
|
|
417
|
-
"--mcp-tool", "query",
|
|
410
|
+
] : [
|
|
418
411
|
"--openai-url", "https://api.openai.com/v1",
|
|
419
412
|
"--openai-api", "responses",
|
|
420
413
|
"--openai-model", "gpt-5.5"
|
|
421
|
-
]
|
|
422
|
-
|
|
423
|
-
|
|
414
|
+
])
|
|
415
|
+
]
|
|
416
|
+
});
|
|
424
417
|
else
|
|
425
418
|
await this.mcpRemove(tool, spec.server);
|
|
426
419
|
}
|
|
@@ -433,30 +426,23 @@ export default class SetupCommand {
|
|
|
433
426
|
server: "chat-google-gemini",
|
|
434
427
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
435
428
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
436
|
-
if (action === "activate")
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
429
|
+
if (action === "activate")
|
|
430
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
431
|
+
type: "stdio", command: [
|
|
432
|
+
"npx", "-y", "mcp-to-openai",
|
|
433
|
+
"--service", spec.name,
|
|
434
|
+
"--mcp-tool", "query",
|
|
435
|
+
...(envKey === "OPENROUTER" ? [
|
|
443
436
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
444
437
|
"--openai-api", "completion",
|
|
445
438
|
"--openai-model", "google/gemini-3.5-flash"
|
|
446
|
-
]
|
|
447
|
-
});
|
|
448
|
-
else
|
|
449
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
450
|
-
type: "stdio", command: [
|
|
451
|
-
"npx", "-y", "mcp-to-openai",
|
|
452
|
-
"--service", spec.name,
|
|
453
|
-
"--mcp-tool", "query",
|
|
439
|
+
] : [
|
|
454
440
|
"--openai-url", "https://generativelanguage.googleapis.com/v1beta/openai/",
|
|
455
441
|
"--openai-api", "completion",
|
|
456
442
|
"--openai-model", "gemini-3.5-flash"
|
|
457
|
-
]
|
|
458
|
-
|
|
459
|
-
|
|
443
|
+
])
|
|
444
|
+
]
|
|
445
|
+
});
|
|
460
446
|
else
|
|
461
447
|
await this.mcpRemove(tool, spec.server);
|
|
462
448
|
}
|
|
@@ -469,31 +455,23 @@ export default class SetupCommand {
|
|
|
469
455
|
server: "chat-deepseek",
|
|
470
456
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
471
457
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
472
|
-
if (action === "activate")
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
"--mcp-tool", "query",
|
|
458
|
+
if (action === "activate")
|
|
459
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
460
|
+
type: "stdio", command: [
|
|
461
|
+
"npx", "-y", "mcp-to-openai",
|
|
462
|
+
"--service", spec.name,
|
|
463
|
+
"--mcp-tool", "query",
|
|
464
|
+
...(envKey === "OPENROUTER" ? [
|
|
480
465
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
481
466
|
"--openai-api", "completion",
|
|
482
467
|
"--openai-model", "deepseek/deepseek-v4-flash"
|
|
483
|
-
]
|
|
484
|
-
});
|
|
485
|
-
else
|
|
486
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
487
|
-
type: "stdio", command: [
|
|
488
|
-
"npx", "-y", "mcp-to-openai",
|
|
489
|
-
"--service", spec.name,
|
|
490
|
-
"--mcp-tool", "query",
|
|
468
|
+
] : [
|
|
491
469
|
"--openai-url", "https://api.deepseek.com/v1",
|
|
492
470
|
"--openai-api", "completion",
|
|
493
471
|
"--openai-model", "deepseek-v4-flash"
|
|
494
|
-
]
|
|
495
|
-
|
|
496
|
-
|
|
472
|
+
])
|
|
473
|
+
]
|
|
474
|
+
});
|
|
497
475
|
else
|
|
498
476
|
await this.mcpRemove(tool, spec.server);
|
|
499
477
|
}
|
|
@@ -506,30 +484,23 @@ export default class SetupCommand {
|
|
|
506
484
|
server: "chat-xai-grok",
|
|
507
485
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
508
486
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
509
|
-
if (action === "activate")
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
487
|
+
if (action === "activate")
|
|
488
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
489
|
+
type: "stdio", command: [
|
|
490
|
+
"npx", "-y", "mcp-to-openai",
|
|
491
|
+
"--service", spec.name,
|
|
492
|
+
"--mcp-tool", "query",
|
|
493
|
+
...(envKey === "OPENROUTER" ? [
|
|
516
494
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
517
495
|
"--openai-api", "completion",
|
|
518
496
|
"--openai-model", "x-ai/grok-4.3"
|
|
519
|
-
]
|
|
520
|
-
});
|
|
521
|
-
else
|
|
522
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
523
|
-
type: "stdio", command: [
|
|
524
|
-
"npx", "-y", "mcp-to-openai",
|
|
525
|
-
"--service", spec.name,
|
|
526
|
-
"--mcp-tool", "query",
|
|
497
|
+
] : [
|
|
527
498
|
"--openai-url", "https://api.x.ai/v1",
|
|
528
499
|
"--openai-api", "completion",
|
|
529
500
|
"--openai-model", "grok-4.3"
|
|
530
|
-
]
|
|
531
|
-
|
|
532
|
-
|
|
501
|
+
])
|
|
502
|
+
]
|
|
503
|
+
});
|
|
533
504
|
else
|
|
534
505
|
await this.mcpRemove(tool, spec.server);
|
|
535
506
|
}
|
|
@@ -542,30 +513,23 @@ export default class SetupCommand {
|
|
|
542
513
|
server: "chat-alibaba-qwen",
|
|
543
514
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
544
515
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
545
|
-
if (action === "activate")
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
516
|
+
if (action === "activate")
|
|
517
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
518
|
+
type: "stdio", command: [
|
|
519
|
+
"npx", "-y", "mcp-to-openai",
|
|
520
|
+
"--service", spec.name,
|
|
521
|
+
"--mcp-tool", "query",
|
|
522
|
+
...(envKey === "OPENROUTER" ? [
|
|
552
523
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
553
524
|
"--openai-api", "completion",
|
|
554
525
|
"--openai-model", "qwen/qwen3.7-max"
|
|
555
|
-
]
|
|
556
|
-
});
|
|
557
|
-
else
|
|
558
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
559
|
-
type: "stdio", command: [
|
|
560
|
-
"npx", "-y", "mcp-to-openai",
|
|
561
|
-
"--service", spec.name,
|
|
562
|
-
"--mcp-tool", "query",
|
|
526
|
+
] : [
|
|
563
527
|
"--openai-url", "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
564
528
|
"--openai-api", "completion",
|
|
565
529
|
"--openai-model", "qwen3.7-max"
|
|
566
|
-
]
|
|
567
|
-
|
|
568
|
-
|
|
530
|
+
])
|
|
531
|
+
]
|
|
532
|
+
});
|
|
569
533
|
else
|
|
570
534
|
await this.mcpRemove(tool, spec.server);
|
|
571
535
|
}
|
|
@@ -578,30 +542,23 @@ export default class SetupCommand {
|
|
|
578
542
|
server: "chat-zai-glm",
|
|
579
543
|
skills: ["ase-meta-chat", "ase-meta-quorum"],
|
|
580
544
|
handler: async (spec, tool, action, envKey, envVal) => {
|
|
581
|
-
if (action === "activate")
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
545
|
+
if (action === "activate")
|
|
546
|
+
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
547
|
+
type: "stdio", command: [
|
|
548
|
+
"npx", "-y", "mcp-to-openai",
|
|
549
|
+
"--service", spec.name,
|
|
550
|
+
"--mcp-tool", "query",
|
|
551
|
+
...(envKey === "OPENROUTER" ? [
|
|
588
552
|
"--openai-url", "https://openrouter.ai/api/v1",
|
|
589
553
|
"--openai-api", "completion",
|
|
590
554
|
"--openai-model", "z-ai/glm-5.1"
|
|
591
|
-
]
|
|
592
|
-
});
|
|
593
|
-
else
|
|
594
|
-
await this.mcpAdd(tool, spec.server, { OPENAI_KEY: envVal }, {
|
|
595
|
-
type: "stdio", command: [
|
|
596
|
-
"npx", "-y", "mcp-to-openai",
|
|
597
|
-
"--service", spec.name,
|
|
598
|
-
"--mcp-tool", "query",
|
|
555
|
+
] : [
|
|
599
556
|
"--openai-url", "https://api.z.ai/api/paas/v4/",
|
|
600
557
|
"--openai-api", "completion",
|
|
601
558
|
"--openai-model", "glm-5.1"
|
|
602
|
-
]
|
|
603
|
-
|
|
604
|
-
|
|
559
|
+
])
|
|
560
|
+
]
|
|
561
|
+
});
|
|
605
562
|
else
|
|
606
563
|
await this.mcpRemove(tool, spec.server);
|
|
607
564
|
}
|
|
@@ -667,7 +624,7 @@ export default class SetupCommand {
|
|
|
667
624
|
const devDflt = envDev !== "" && envDev !== "0" && envDev.toLowerCase() !== "false";
|
|
668
625
|
/* default for --tool derived from ASE_TOOL environment variable */
|
|
669
626
|
const envTool = process.env.ASE_TOOL ?? "";
|
|
670
|
-
const toolDflt = envTool !== "" ? envTool : "claude";
|
|
627
|
+
const toolDflt = envTool !== "" ? this.parseTool(envTool) : "claude";
|
|
671
628
|
/* register CLI top-level command "ase setup" */
|
|
672
629
|
const setupCmd = program
|
|
673
630
|
.command("setup")
|
package/dst/ase-statusline.js
CHANGED
|
@@ -182,7 +182,7 @@ export default class StatuslineCommand {
|
|
|
182
182
|
register(program) {
|
|
183
183
|
/* default for --tool derived from ASE_TOOL environment variable */
|
|
184
184
|
const envTool = process.env.ASE_TOOL ?? "";
|
|
185
|
-
const toolDflt = envTool !== "" ? envTool : "claude";
|
|
185
|
+
const toolDflt = envTool !== "" ? this.parseTool(envTool) : "claude";
|
|
186
186
|
program
|
|
187
187
|
.command("statusline")
|
|
188
188
|
.description("Render Claude Code or GitHub Copilot CLI statusline from stdin JSON")
|
package/dst/ase-task.js
CHANGED
|
@@ -384,6 +384,7 @@ export class TaskMCP {
|
|
|
384
384
|
};
|
|
385
385
|
}
|
|
386
386
|
});
|
|
387
|
+
/* task delete */
|
|
387
388
|
mcp.registerTool("ase_task_delete", {
|
|
388
389
|
title: "ASE task delete",
|
|
389
390
|
description: "Delete a previously persisted task by `id`. " +
|
|
@@ -396,8 +397,8 @@ export class TaskMCP {
|
|
|
396
397
|
try {
|
|
397
398
|
const removed = Task.delete(args.id);
|
|
398
399
|
const msg = removed ?
|
|
399
|
-
|
|
400
|
-
|
|
400
|
+
`task_delete: OK: removed task "${args.id}"` :
|
|
401
|
+
`task_delete: WARNING: no task "${args.id}" to remove`;
|
|
401
402
|
return {
|
|
402
403
|
content: [{ type: "text", text: msg }]
|
|
403
404
|
};
|
|
@@ -427,7 +428,7 @@ export class TaskMCP {
|
|
|
427
428
|
const renamed = Task.rename(args.old, args.new);
|
|
428
429
|
const msg = renamed ?
|
|
429
430
|
`task_rename: OK: renamed task "${args.old}" to "${args.new}"` :
|
|
430
|
-
|
|
431
|
+
`task_rename: WARNING: no task "${args.old}" to rename`;
|
|
431
432
|
return {
|
|
432
433
|
content: [{ type: "text", text: msg }]
|
|
433
434
|
};
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.55",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.55",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -24,8 +24,10 @@ Discover Components
|
|
|
24
24
|
Discover Components
|
|
25
25
|
</skill>
|
|
26
26
|
|
|
27
|
+
<role>
|
|
27
28
|
Your role is an experienced, *expert-level software architect*,
|
|
28
29
|
specialized in *finding components* (libraries/frameworks) for the technology stack.
|
|
30
|
+
</role>
|
|
29
31
|
|
|
30
32
|
<objective>
|
|
31
33
|
*Discover* additional, *third-party components* (libraries/frameworks)
|
|
@@ -71,7 +71,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
71
71
|
</if>
|
|
72
72
|
|
|
73
73
|
2. If <feature/> has the format `<id/>: <text/>` where <id/> matches
|
|
74
|
-
the regexp `^[a-zA-Z][a-zA-Z0-9_-]
|
|
74
|
+
the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`, then set
|
|
75
75
|
<feature><text/></feature> and <ase-task-id><id/></ase-task-id>
|
|
76
76
|
and call the `ase_task_id(id: <ase-task-id/>, session:
|
|
77
77
|
<ase-session-id/>)` tool from the `ase` MCP server to
|
|
@@ -22,8 +22,10 @@ Explain Source Code
|
|
|
22
22
|
Explain Source Code
|
|
23
23
|
</skill>
|
|
24
24
|
|
|
25
|
+
<role>
|
|
25
26
|
Your role is an experienced, *expert-level software developer*,
|
|
26
27
|
specialized in *explaining source code*.
|
|
28
|
+
</role>
|
|
27
29
|
|
|
28
30
|
<objective>
|
|
29
31
|
*Analyze* the source code of $ARGUMENTS, and its directly related source
|
|
@@ -5,7 +5,7 @@ description: >
|
|
|
5
5
|
Give insights into the source code.
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
|
-
effort:
|
|
8
|
+
effort: medium
|
|
9
9
|
allowed-tools:
|
|
10
10
|
- "Bash(git)"
|
|
11
11
|
- "Bash(sort)"
|
|
@@ -25,8 +25,10 @@ Project Insight
|
|
|
25
25
|
Project Insight
|
|
26
26
|
</skill>
|
|
27
27
|
|
|
28
|
+
<role>
|
|
28
29
|
Your role is an experienced, *expert-level software developer*,
|
|
29
30
|
specialized in *analyzing source code* and giving insights.
|
|
31
|
+
</role>
|
|
30
32
|
|
|
31
33
|
<objective>
|
|
32
34
|
Give *insights* into the project through the source code of $ARGUMENTS.
|
|
@@ -83,7 +83,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
83
83
|
</if>
|
|
84
84
|
|
|
85
85
|
3. If <problem/> has the format `<id/>: <text/>` where <id/> matches
|
|
86
|
-
the regexp `^[a-zA-Z][a-zA-Z0-9_-]
|
|
86
|
+
the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`, then set
|
|
87
87
|
<problem><text/></problem> and <ase-task-id><id/></ase-task-id>
|
|
88
88
|
and call the `ase_task_id(id: <ase-task-id/>, session:
|
|
89
89
|
<ase-session-id/>)` tool from the `ase` MCP server to
|
|
@@ -8,7 +8,7 @@ disable-model-invocation: false
|
|
|
8
8
|
effort: medium
|
|
9
9
|
allowed-tools:
|
|
10
10
|
- "Bash(git log *)"
|
|
11
|
-
- "Bash(git
|
|
11
|
+
- "Bash(git diff *)"
|
|
12
12
|
- "Bash(git show *)"
|
|
13
13
|
- "Write"
|
|
14
14
|
- "Edit"
|
|
@@ -24,78 +24,149 @@ Update ChangeLog Entries
|
|
|
24
24
|
Update ChangeLog Entries
|
|
25
25
|
</skill>
|
|
26
26
|
|
|
27
|
+
<role>
|
|
27
28
|
Your role is an experienced, *expert-level software developer*,
|
|
28
29
|
specialized in *Git version control*.
|
|
30
|
+
</role>
|
|
29
31
|
|
|
30
32
|
<objective>
|
|
31
|
-
Help to complete, consolidate and sort *ChangeLog* entries
|
|
32
|
-
based on underlying *Git*
|
|
33
|
+
Help to complete, consolidate and sort *ChangeLog* entries of the most
|
|
34
|
+
recent *ChangeLog* section, based on underlying *Git* commits and staged
|
|
35
|
+
changes.
|
|
33
36
|
</objective>
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
the <prefix/> is one of the following tags
|
|
38
|
-
and their usual related changes...
|
|
38
|
+
Format
|
|
39
|
+
------
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- `BUGFIX`: corrected functionality or configuration
|
|
43
|
-
- `UPDATE`: updated functionality or configuration
|
|
44
|
-
- `CLEANUP`: cleaned up functionality or configuration
|
|
45
|
-
- `REFACTOR`: refactored functionality or configuration
|
|
41
|
+
The *ChangeLog* file is a Markdown formatted file named `CHANGELOG.md`,
|
|
42
|
+
and contains sections with headers in the style `N.M.K (YYYY-MM-DD)`.
|
|
46
43
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
Each *ChangeLog* entry is always formatted as `<prefix/>: <summary/>`
|
|
45
|
+
where the <prefix/> is one of the following tags and their usual related
|
|
46
|
+
changes:
|
|
47
|
+
|
|
48
|
+
- `FEATURE`: new functionality or configuration
|
|
49
|
+
- `IMPROVEMENT`: improved functionality or configuration
|
|
50
|
+
- `BUGFIX`: corrected functionality or configuration
|
|
51
|
+
- `UPDATE`: updated functionality or configuration
|
|
52
|
+
- `CLEANUP`: cleaned up functionality or configuration
|
|
53
|
+
- `REFACTOR`: refactored functionality or configuration
|
|
54
|
+
|
|
55
|
+
The <summary/> is not longer than about 60-80 characters. The
|
|
56
|
+
*ChangeLog* entries for a single product release version are also always
|
|
57
|
+
grouped and sorted according to the above <prefix/> list.
|
|
58
|
+
|
|
59
|
+
Processing
|
|
60
|
+
----------
|
|
50
61
|
|
|
51
62
|
<flow>
|
|
52
63
|
|
|
53
|
-
1.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
64
|
+
1. <step id="STEP 1: Locate and read ChangeLog entries">
|
|
65
|
+
|
|
66
|
+
The *ChangeLog* file `CHANGELOG.md` is located in the *current*
|
|
67
|
+
directory or one of the *parent* directories of the current project.
|
|
68
|
+
Locate and read this file. Store its relative path in <filename/>.
|
|
69
|
+
|
|
70
|
+
You *MUST* *NOT* output anything, except the result with the
|
|
71
|
+
following <template/>:
|
|
72
|
+
|
|
73
|
+
<template>
|
|
74
|
+
🔵 **CHANGELOG FILE:** `<filename/>`
|
|
75
|
+
</template>
|
|
76
|
+
|
|
77
|
+
</step>
|
|
78
|
+
|
|
79
|
+
2. <step id="STEP 2: Determine artifact changes">
|
|
80
|
+
|
|
81
|
+
You *MUST* *NOT* output anything, except introduce the current
|
|
82
|
+
operation with an output based on the following <template/>:
|
|
83
|
+
|
|
84
|
+
<template>
|
|
85
|
+
🔵 **DETERMINE ARTIFACT CHANGES:**
|
|
86
|
+
</template>
|
|
87
|
+
|
|
88
|
+
To update to entries of the most recent *ChangeLog* section, consult
|
|
89
|
+
the Git *commits* plus the currently already staged changes in the Git
|
|
90
|
+
*index*, but *ignore* the Git *stash* and still unstaged changes.
|
|
91
|
+
|
|
92
|
+
For finding the corresponding Git *commits*, use the `N.M.K` from the
|
|
93
|
+
*second* level-2 header in the *ChangeLog* file as the corresponding
|
|
94
|
+
Git tag and then check all Git commits between `HEAD` and this tag
|
|
95
|
+
with the command `git log N.M.K..HEAD --numstat --pretty=format:'%h:
|
|
96
|
+
%s'`.
|
|
97
|
+
|
|
98
|
+
For finding the corresponding staged Git *changes* in the Git
|
|
99
|
+
*index*, use the command `git diff --cached --numstat`, but silently
|
|
100
|
+
skip already existing changes to the `CHANGELOG.md` file itself. If
|
|
101
|
+
still no corresponding *ChangeLog* entry exists for these staged
|
|
102
|
+
Git *changes*, derive a meaningful one from a `git diff --cached`
|
|
103
|
+
command.
|
|
104
|
+
|
|
105
|
+
</step>
|
|
106
|
+
|
|
107
|
+
3. <step id="STEP 3: Complete ChangeLog entries">
|
|
108
|
+
|
|
109
|
+
You *MUST* *NOT* output anything, except introduce the current
|
|
110
|
+
operation with an output based on the following <template/>:
|
|
111
|
+
|
|
112
|
+
<template>
|
|
113
|
+
🔵 **COMPLETE ENTRIES:**
|
|
114
|
+
</template>
|
|
115
|
+
|
|
116
|
+
Without immediately modifying the `CHANGELOG.md` file, *complete*
|
|
117
|
+
the entries in the first (most recent) section only, by adding the
|
|
118
|
+
corresponding (most recent) Git *commits* and *staged* changes only.
|
|
119
|
+
|
|
120
|
+
For each Git commit, reduce the Git commit messages to a single
|
|
121
|
+
short <summary/> sentence, not longer than 60-80 characters.
|
|
122
|
+
|
|
123
|
+
If a <summary/> is too short or especially is not comprehensible
|
|
124
|
+
enough because of too little context information, add some essential
|
|
125
|
+
context, especially references to the class/module/package, etc.
|
|
126
|
+
For this, if necessary, read the related source files with a
|
|
127
|
+
corresponding `git show` command to get a better understanding of
|
|
128
|
+
this context.
|
|
129
|
+
|
|
130
|
+
</step>
|
|
131
|
+
|
|
132
|
+
4. <step id="STEP 4: Consolidate and sort ChangeLog entries">
|
|
133
|
+
|
|
134
|
+
You *MUST* *NOT* output anything, except introduce the current
|
|
135
|
+
operation with an output based on the following <template/>:
|
|
136
|
+
|
|
137
|
+
<template>
|
|
138
|
+
🔵 **CONSOLIDATE ENTRIES:**
|
|
139
|
+
</template>
|
|
140
|
+
|
|
141
|
+
Without immediately modifying the `CHANGELOG.md` file, *consolidate*
|
|
142
|
+
the entries in the first (most recent) section only, by summarizing
|
|
143
|
+
and merging closely related entries. Perform the entry consolidation
|
|
144
|
+
per <prefix/> group only.
|
|
145
|
+
|
|
146
|
+
Without immediately modifying the `CHANGELOG.md` file, *sort* the
|
|
147
|
+
entries in the first (most recent) section only. Instead of the
|
|
148
|
+
chronological commit order, group the entries by the <prefix/>es.
|
|
149
|
+
|
|
150
|
+
</step>
|
|
151
|
+
|
|
152
|
+
5. <step id="STEP 5: Write modified ChangeLog entries">
|
|
153
|
+
|
|
154
|
+
You *MUST* *NOT* output anything, except introduce the current
|
|
155
|
+
operation with an output based on the following <template/>:
|
|
156
|
+
|
|
157
|
+
<template>
|
|
158
|
+
🟠 **UPDATING CHANGELOG:**
|
|
159
|
+
</template>
|
|
160
|
+
|
|
161
|
+
Finally, *update* the `CHANGELOG.md` file with the completed,
|
|
162
|
+
consolidated and sorted *ChangeLog* entries. Also, update the date
|
|
163
|
+
`YYYY-MM-DD` in the `N.M.K (YYYY-MM-DD)` header of the *first* (most
|
|
164
|
+
recent) section.
|
|
165
|
+
|
|
166
|
+
You *MUST* *NOT* output any further summary or give any further
|
|
167
|
+
explanations.
|
|
168
|
+
|
|
169
|
+
</step>
|
|
99
170
|
|
|
100
171
|
</flow>
|
|
101
172
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-commit
|
|
3
|
-
argument-hint: ""
|
|
4
3
|
description: >
|
|
5
4
|
Determine commit message for staged Git changes.
|
|
6
5
|
user-invocable: true
|
|
@@ -20,8 +19,10 @@ Git Commit
|
|
|
20
19
|
Git Commit
|
|
21
20
|
</skill>
|
|
22
21
|
|
|
22
|
+
<role>
|
|
23
23
|
Your role is an experienced, *expert-level software developer*,
|
|
24
24
|
specialized in *Git commit messages*.
|
|
25
|
+
</role>
|
|
25
26
|
|
|
26
27
|
<objective>
|
|
27
28
|
Help to *craft* a *concise commit message* for the
|
|
@@ -29,28 +30,34 @@ currently staged Git changes.
|
|
|
29
30
|
</objective>
|
|
30
31
|
|
|
31
32
|
<flow>
|
|
33
|
+
|
|
32
34
|
1. <step id="STEP 1: Find out staged changes">
|
|
33
|
-
Run the following command to find out details
|
|
34
|
-
of what changes are currently staged for commit:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Run the following command to find out details of what changes are
|
|
37
|
+
currently staged in the Git *index* for commit:
|
|
38
|
+
|
|
39
|
+
`git diff --cached`
|
|
40
|
+
|
|
37
41
|
</step>
|
|
38
42
|
|
|
39
43
|
2. <step id="STEP 2: Craft a consolidated commit message">
|
|
44
|
+
|
|
40
45
|
Craft a commit <message/> in the following format:
|
|
41
46
|
|
|
42
47
|
`<type/>: <summary/>`
|
|
43
48
|
|
|
44
49
|
The known <type/>s and their usual corresponding kind of change are:
|
|
45
|
-
|
|
50
|
+
|
|
51
|
+
- `FEATURE`: new functionality or configuration
|
|
46
52
|
- `IMPROVEMENT`: improved functionality or configuration
|
|
47
|
-
- `BUGFIX`:
|
|
48
|
-
- `UPDATE`:
|
|
49
|
-
- `CLEANUP`:
|
|
50
|
-
- `REFACTOR`:
|
|
53
|
+
- `BUGFIX`: corrected functionality or configuration
|
|
54
|
+
- `UPDATE`: updated functionality or configuration
|
|
55
|
+
- `CLEANUP`: cleaned up functionality or configuration
|
|
56
|
+
- `REFACTOR`: refactored functionality or configuration
|
|
51
57
|
|
|
52
58
|
The rules for generating <summary/> are:
|
|
53
|
-
|
|
59
|
+
|
|
60
|
+
- Use a maximum of 60-80 characters
|
|
54
61
|
- Use imperative mood ("add" not "added")
|
|
55
62
|
- Use *no* period at the end
|
|
56
63
|
- Use *no* Markdown formatting
|
|
@@ -63,6 +70,8 @@ currently staged Git changes.
|
|
|
63
70
|
</template>
|
|
64
71
|
|
|
65
72
|
Do *not* output any further explanation.
|
|
73
|
+
|
|
66
74
|
</step>
|
|
75
|
+
|
|
67
76
|
</flow>
|
|
68
77
|
|
|
@@ -88,7 +88,7 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
88
88
|
3. <step id="STEP 3: Summarize Responses">
|
|
89
89
|
|
|
90
90
|
Agents which returned a response with an `ERROR:` prefix are
|
|
91
|
-
silently skipped and are
|
|
91
|
+
silently skipped and are treated as not available.
|
|
92
92
|
|
|
93
93
|
Summarize all responses, of both yourself and all available agents
|
|
94
94
|
with just 1 to 7 corresponding bullet points and with short
|
|
@@ -150,6 +150,14 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
150
150
|
○ **xAI Grok**:
|
|
151
151
|
- [...]
|
|
152
152
|
- [...]
|
|
153
|
+
|
|
154
|
+
○ **Z.AI GLM**:
|
|
155
|
+
- [...]
|
|
156
|
+
- [...]
|
|
157
|
+
|
|
158
|
+
○ **Alibaba Qwen**:
|
|
159
|
+
- [...]
|
|
160
|
+
- [...]
|
|
153
161
|
</template>
|
|
154
162
|
|
|
155
163
|
In this output, remove the sections of those AIs which were not available.
|
|
@@ -79,7 +79,7 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
79
79
|
calls above into a single response and output it without giving any
|
|
80
80
|
further explanations.
|
|
81
81
|
|
|
82
|
-
For the consolidation, do *NOT* remove any
|
|
82
|
+
For the consolidation, do *NOT* remove any original information,
|
|
83
83
|
just *MERGE* all overlapping information.
|
|
84
84
|
|
|
85
85
|
</step>
|
|
@@ -20,7 +20,9 @@ Delete a Task Plan
|
|
|
20
20
|
Delete a Task Plan
|
|
21
21
|
</skill>
|
|
22
22
|
|
|
23
|
+
<role>
|
|
23
24
|
Your role is an experienced, *expert-level assistant*.
|
|
25
|
+
</role>
|
|
24
26
|
*Delete* the task plan.
|
|
25
27
|
|
|
26
28
|
Procedure
|
|
@@ -57,7 +59,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
57
59
|
⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
|
|
58
60
|
</template>
|
|
59
61
|
|
|
60
|
-
- If <text/> starts NOT with `ERROR:`:
|
|
62
|
+
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
61
63
|
Only output the following <template/>:
|
|
62
64
|
|
|
63
65
|
<template>
|
|
@@ -30,9 +30,11 @@ Iteratively Edit a Task Plan
|
|
|
30
30
|
$ARGUMENTS
|
|
31
31
|
</expand>
|
|
32
32
|
|
|
33
|
+
<role>
|
|
33
34
|
Your role is an experienced, *expert-level assistant*,
|
|
34
35
|
specialized in the *planning* of changes
|
|
35
36
|
through *iterative conversational refinement*.
|
|
37
|
+
</role>
|
|
36
38
|
|
|
37
39
|
Establish and refine the *task plan* purely through a *chat-driven
|
|
38
40
|
loop*. The user steers each round via interactive dialog that offers
|
|
@@ -28,8 +28,10 @@ Implement a Task Plan
|
|
|
28
28
|
$ARGUMENTS
|
|
29
29
|
</expand>
|
|
30
30
|
|
|
31
|
+
<role>
|
|
31
32
|
Your role is an experienced, *expert-level assistant*,
|
|
32
33
|
specialized in the *implementation* of changes.
|
|
34
|
+
</role>
|
|
33
35
|
|
|
34
36
|
*Implement* the task plan by modifying the *artifacts*
|
|
35
37
|
with a corresponding, complete *change set*.
|
|
@@ -28,8 +28,10 @@ Preflight a Task Plan
|
|
|
28
28
|
$ARGUMENTS
|
|
29
29
|
</expand>
|
|
30
30
|
|
|
31
|
+
<role>
|
|
31
32
|
Your role is an experienced, *expert-level assistant*,
|
|
32
33
|
specialized in the *implementation* of changes.
|
|
34
|
+
</role>
|
|
33
35
|
|
|
34
36
|
*Preflight* the implementation of a task plan by creating a draft
|
|
35
37
|
for a corresponding, *complete source code change set*.
|
|
@@ -7,7 +7,7 @@ description: >
|
|
|
7
7
|
the "task", "plan", "spec", or "specification".
|
|
8
8
|
user-invocable: true
|
|
9
9
|
disable-model-invocation: false
|
|
10
|
-
effort:
|
|
10
|
+
effort: high
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
@@ -28,8 +28,10 @@ Reboot a Task Plan
|
|
|
28
28
|
$ARGUMENTS
|
|
29
29
|
</expand>
|
|
30
30
|
|
|
31
|
+
<role>
|
|
31
32
|
Your role is an experienced, *expert-level assistant*,
|
|
32
33
|
specialized in the *planning* of changes.
|
|
34
|
+
</role>
|
|
33
35
|
|
|
34
36
|
*Reboot* the task plan by crafting it from scratch,
|
|
35
37
|
based on the existing *WHAT* and *WHY*.
|
|
@@ -20,7 +20,9 @@ View a Task Plan
|
|
|
20
20
|
View a Task Plan
|
|
21
21
|
</skill>
|
|
22
22
|
|
|
23
|
+
<role>
|
|
23
24
|
Your role is an experienced, *expert-level assistant*.
|
|
25
|
+
</role>
|
|
24
26
|
*View* the task plan.
|
|
25
27
|
|
|
26
28
|
Procedure
|
|
@@ -58,7 +60,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
58
60
|
⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
|
|
59
61
|
</template>
|
|
60
62
|
|
|
61
|
-
- If <text/> starts NOT with `ERROR:`:
|
|
63
|
+
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
62
64
|
Set <content><text/></content> (set content to text).
|
|
63
65
|
Calculate the number of words <words/> of <content/>.
|
|
64
66
|
Only output the following <template/>:
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
argument-hint: ""
|
|
3
|
-
description: "During Lint: Complete Code Change"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Sorry, your last proposed code change set seems to be not really *complete*,
|
|
7
|
-
as some code changes seem to be missing.
|
|
8
|
-
Please *re-assess* and propose the *entire necessary change set*, all *at once*.
|
|
9
|
-
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
argument-hint: ""
|
|
3
|
-
description: "During Lint: Reject Change and Continue"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
I *reject* your last proposed code change.
|
|
7
|
-
|
|
8
|
-
Do *NOT apply* your last code change to the code.
|
|
9
|
-
But please *continue* your plan and *continue*
|
|
10
|
-
to propose further code changes.
|
|
11
|
-
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
argument-hint: "<question>"
|
|
3
|
-
description: "During Lint: Re-Assess Last Change"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Are you *really sure*? $ARGUMENTS
|
|
7
|
-
|
|
8
|
-
Please *re-assess* and *reason* on your last proposed code change!
|
|
9
|
-
|
|
10
|
-
Then, if you are still sure that it is correct, please *propose the code
|
|
11
|
-
change once again* before continuing with your plan.
|
|
12
|
-
|
|
13
|
-
Otherwise, if you are unsure, be transparent and tell me your new
|
|
14
|
-
reasoned concerns and continue with your plan immediately.
|
|
15
|
-
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
argument-hint: ""
|
|
3
|
-
description: "During Lint: Recheck Change"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
The source code was *updated externally*.
|
|
7
|
-
Please update your last code change against the latest source code
|
|
8
|
-
and *propose the code change again* before you continue following your review.
|
|
9
|
-
|