devlyn-cli 2.5.3 → 2.5.4
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/benchmark/auto-resolve/scripts/judge-opus-pass.sh +3 -3
- package/config/skills/_shared/adapters/README.md +2 -2
- package/config/skills/_shared/adapters/{opus-4-7.md → claude.md} +5 -5
- package/config/skills/_shared/adapters/{gpt-5-5.md → codex.md} +3 -3
- package/config/skills/devlyn:ideate/SKILL.md +1 -1
- package/config/skills/devlyn:resolve/SKILL.md +1 -1
- package/config/skills/devlyn:resolve/references/phases/plan.md +1 -1
- package/optional-skills/prompt-engineering/SKILL.md +5 -5
- package/package.json +1 -1
- package/scripts/lint-skills.sh +11 -11
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# judge-opus-pass.sh — POST-RUN Opus
|
|
2
|
+
# judge-opus-pass.sh — POST-RUN Opus dual-judge sidecar.
|
|
3
3
|
#
|
|
4
|
-
# Runs Opus
|
|
4
|
+
# Runs Opus (the Claude CLI's default model) over the SAME sanitized blind prompts that judge.sh wrote
|
|
5
5
|
# (judge-prompt.txt), producing a parallel judge-opus.json alongside the
|
|
6
6
|
# canonical judge.json. Does NOT modify judge.sh and does NOT change the
|
|
7
7
|
# measurement contract for the in-flight run — this is a sidecar that adds
|
|
@@ -107,7 +107,7 @@ PY
|
|
|
107
107
|
command -v claude >/dev/null 2>&1 || { echo "claude CLI not on PATH"; exit 1; }
|
|
108
108
|
|
|
109
109
|
CLAUDE_CLI_VER=$(claude --version 2>/dev/null || echo "claude-cli unknown")
|
|
110
|
-
JUDGE_MODEL_ALIAS="opus-
|
|
110
|
+
JUDGE_MODEL_ALIAS="opus-default"
|
|
111
111
|
|
|
112
112
|
echo "[opus-judge] run-id=$RUN_ID cli=$CLAUDE_CLI_VER model=$JUDGE_MODEL_ALIAS"
|
|
113
113
|
|
|
@@ -14,10 +14,10 @@ This is also the load-bearing piece for **multi-LLM evolution**. When Qwen / Gem
|
|
|
14
14
|
|
|
15
15
|
## Format
|
|
16
16
|
|
|
17
|
-
Each adapter is a single markdown file named `<
|
|
17
|
+
Each adapter is a single markdown file named `<engine>.md`, matching the `--engine` selector value (e.g. `claude.md`, `codex.md`). Structure:
|
|
18
18
|
|
|
19
19
|
```markdown
|
|
20
|
-
# <
|
|
20
|
+
# <Engine> adapter
|
|
21
21
|
|
|
22
22
|
> Source: <official-prompt-engineering-guide URL>
|
|
23
23
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Claude Opus
|
|
1
|
+
# Claude Opus adapter
|
|
2
2
|
|
|
3
3
|
> Source: <https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices>
|
|
4
4
|
|
|
5
5
|
## Identity
|
|
6
6
|
|
|
7
|
-
You are Claude Opus
|
|
7
|
+
You are Claude Opus by Anthropic. Anthropic's prompt-engineering guide for this model governs your behavior on top of the canonical phase prompt below. When the canonical body and this header conflict on tactics, the canonical body wins on what to deliver; this header wins on how to deliver it.
|
|
8
8
|
|
|
9
9
|
## Output discipline
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ When prompt maintenance adds examples for Claude, prefer concise positive exampl
|
|
|
16
16
|
|
|
17
17
|
## Tool-use posture
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
When the canonical body lists tools, use them when their result would change your answer. Make independent tool calls in parallel; chain only when one depends on another's output. Do not narrate "I'll now call X" preambles unless the canonical body requests progress updates.
|
|
20
20
|
|
|
21
21
|
## Effort and autonomy
|
|
22
22
|
|
|
@@ -28,10 +28,10 @@ When the canonical body asks you to verify your output before declaring done ("s
|
|
|
28
28
|
|
|
29
29
|
## Anti-patterns
|
|
30
30
|
|
|
31
|
-
You interpret instructions
|
|
31
|
+
You interpret instructions literally and explicitly. The official guide is explicit about three failure modes:
|
|
32
32
|
|
|
33
33
|
1. **Review-prompt self-filtering**: when the canonical body asks for findings, report every issue you find — including low-severity and low-confidence ones; do not filter for importance or confidence. The harness has a separate filter step.
|
|
34
|
-
2. **Subagent
|
|
34
|
+
2. **Subagent spawning**: do NOT spawn a subagent for work you can complete in a single response. Spawn only when the canonical body explicitly requests it OR when fanning out across independent items.
|
|
35
35
|
3. **Overengineering**: do NOT add files, abstractions, error handling, validation, or "future flexibility" beyond what the spec asks. A bug fix doesn't need surrounding cleanup. The right complexity is the minimum needed for the current task.
|
|
36
36
|
|
|
37
37
|
You do NOT need stronger imperatives ("CRITICAL!", "YOU MUST!") to follow rules. Normal phrasing is sufficient.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# OpenAI
|
|
1
|
+
# Codex (OpenAI) adapter
|
|
2
2
|
|
|
3
3
|
> Source: <https://developers.openai.com/api/docs/guides/prompt-guidance?model=gpt-5.5>
|
|
4
4
|
|
|
5
5
|
## Identity
|
|
6
6
|
|
|
7
|
-
You are
|
|
7
|
+
You are OpenAI's Codex model. OpenAI's prompt-guidance for this model governs your behavior on top of the canonical phase prompt below. When the canonical body and this header conflict on tactics, the canonical body wins on what to deliver; this header wins on how to deliver it.
|
|
8
8
|
|
|
9
9
|
## Output discipline
|
|
10
10
|
|
|
@@ -28,6 +28,6 @@ The official guide warns explicitly about carrying over instructions from older
|
|
|
28
28
|
|
|
29
29
|
## Prompt-maintenance cue
|
|
30
30
|
|
|
31
|
-
When asked to improve a failed prompt, act as
|
|
31
|
+
When asked to improve a failed prompt, act as a metaprompter for itself: name the observed failure, then propose the smallest instruction to add, remove, or relocate. Prefer subtractive changes before adding new rules; keep the canonical body model-neutral and put only GPT-specific tactics in this adapter.
|
|
32
32
|
|
|
33
33
|
Do not narrate internal deliberation. State results and decisions directly.
|
|
@@ -28,7 +28,7 @@ Read `_shared/runtime-principles.md` (Subtractive-first / Goal-locked / No-worka
|
|
|
28
28
|
</harness_principles>
|
|
29
29
|
|
|
30
30
|
<engine_routing>
|
|
31
|
-
Default engine: Claude. The per-engine adapter from `_shared/adapters/<
|
|
31
|
+
Default engine: Claude. The per-engine adapter from `_shared/adapters/<engine>.md` is prepended to the elicitation prompt so the model honors its own official prompt-engineering guidance during the Q&A.
|
|
32
32
|
</engine_routing>
|
|
33
33
|
|
|
34
34
|
<modes>
|
|
@@ -28,7 +28,7 @@ Every phase reads `_shared/runtime-principles.md` (Subtractive-first / Goal-lock
|
|
|
28
28
|
</harness_principles>
|
|
29
29
|
|
|
30
30
|
<engine_routing>
|
|
31
|
-
Each phase routes to an engine and prepends the per-engine adapter header from `_shared/adapters/<
|
|
31
|
+
Each phase routes to an engine and prepends the per-engine adapter header from `_shared/adapters/<engine>.md` (e.g. `claude.md`, `codex.md`) to the canonical phase body. Adapter is the per-model delta (Anthropic's Opus prompt-engineering guide for Claude, OpenAI's GPT-5.5 guide for Codex). Canonical body is engine-agnostic.
|
|
32
32
|
|
|
33
33
|
- Claude phases: spawn `Agent` (`mode: "bypassPermissions"`); prompt = adapter-header + canonical-body + task-context.
|
|
34
34
|
- Codex phases: shell out via `bash _shared/codex-monitored.sh` with the same compounded prompt. The wrapper closes stdin and emits a heartbeat. No MCP.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PHASE 1 — PLAN (canonical body)
|
|
2
2
|
|
|
3
|
-
The per-engine adapter header from `_shared/adapters/<
|
|
3
|
+
The per-engine adapter header from `_shared/adapters/<engine>.md` is prepended at runtime. This file is engine-agnostic.
|
|
4
4
|
|
|
5
5
|
<role>
|
|
6
6
|
You translate a spec or generated criteria into a concrete plan: the file list to touch, the risks the implementation must navigate, and a verbatim restatement of what acceptance requires. The plan is the contract IMPLEMENT executes against.
|
|
@@ -5,7 +5,7 @@ allowed-tools: Read, Grep, Glob, Edit, Write
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!--
|
|
8
|
-
Version: 2026-
|
|
8
|
+
Version: 2026-05 | Claude 4.x (Opus 4.8, Sonnet 4.6, Haiku 4.5)
|
|
9
9
|
Source: https://platform.claude.com/docs/build-with-claude/prompt-engineering/claude-4-best-practices
|
|
10
10
|
-->
|
|
11
11
|
|
|
@@ -103,13 +103,13 @@ explicitly requested. Incorporate information naturally into sentences.
|
|
|
103
103
|
START: Which Claude model?
|
|
104
104
|
│
|
|
105
105
|
├─► Complex reasoning, multi-step analysis, or highest quality?
|
|
106
|
-
│ → Opus 4.
|
|
106
|
+
│ → Opus 4.8 (claude-opus-4-8)
|
|
107
107
|
│
|
|
108
108
|
├─► Balance of quality, speed, and cost?
|
|
109
|
-
│ → Sonnet 4.
|
|
109
|
+
│ → Sonnet 4.6 (claude-sonnet-4-6)
|
|
110
110
|
│
|
|
111
111
|
└─► Fast responses, simple tasks, cost-sensitive?
|
|
112
|
-
→ Haiku 4.5 (claude-haiku-4-5-
|
|
112
|
+
→ Haiku 4.5 (claude-haiku-4-5-20251001)
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
---
|
|
@@ -152,7 +152,7 @@ results, execute sequentially. Never use placeholders for missing parameters.
|
|
|
152
152
|
|--------------|--------------|-----|
|
|
153
153
|
| "Can you suggest changes?" | Claude will only suggest, not implement | "Change this function to..." |
|
|
154
154
|
| "Think about this carefully" | Triggers thinking sensitivity | "Consider this carefully" |
|
|
155
|
-
| "CRITICAL: You MUST..." |
|
|
155
|
+
| "CRITICAL: You MUST..." | Claude may over-trigger | "Use this when..." |
|
|
156
156
|
| Vague instructions | Literal interpretation | Add explicit detail |
|
|
157
157
|
| No context for rules | Claude can't generalize | Explain WHY behind rules |
|
|
158
158
|
| Examples with unwanted patterns | Claude mimics examples precisely | Remove unwanted behaviors from examples |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devlyn-cli",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.4",
|
|
4
4
|
"description": "AI development toolkit for Claude Code — ideate, resolve, and ship with context engineering and agent orchestration",
|
|
5
5
|
"homepage": "https://github.com/fysoul17/devlyn-cli#readme",
|
|
6
6
|
"bin": {
|
package/scripts/lint-skills.sh
CHANGED
|
@@ -75,8 +75,8 @@ devlyn:resolve/references/phases/cleanup.md
|
|
|
75
75
|
devlyn:resolve/references/phases/verify.md
|
|
76
76
|
_shared/expected.schema.json
|
|
77
77
|
_shared/adapters/README.md
|
|
78
|
-
_shared/adapters/
|
|
79
|
-
_shared/adapters/
|
|
78
|
+
_shared/adapters/claude.md
|
|
79
|
+
_shared/adapters/codex.md
|
|
80
80
|
_shared/codex-config.md
|
|
81
81
|
_shared/codex-monitored.sh
|
|
82
82
|
_shared/engine-preflight.md
|
|
@@ -1586,29 +1586,29 @@ fi
|
|
|
1586
1586
|
section "Check 10d: Prompt adapters cite official model guidance"
|
|
1587
1587
|
adapter_missing=0
|
|
1588
1588
|
if ! grep -Fq 'https://developers.openai.com/api/docs/guides/prompt-guidance?model=gpt-5.5' \
|
|
1589
|
-
config/skills/_shared/adapters/
|
|
1590
|
-
bad "
|
|
1589
|
+
config/skills/_shared/adapters/codex.md; then
|
|
1590
|
+
bad "codex adapter missing official OpenAI prompt guidance URL"
|
|
1591
1591
|
adapter_missing=1
|
|
1592
1592
|
fi
|
|
1593
1593
|
if ! grep -Fq 'https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices' \
|
|
1594
|
-
config/skills/_shared/adapters/
|
|
1595
|
-
bad "
|
|
1594
|
+
config/skills/_shared/adapters/claude.md; then
|
|
1595
|
+
bad "claude adapter missing official Claude prompting best-practices URL"
|
|
1596
1596
|
adapter_missing=1
|
|
1597
1597
|
fi
|
|
1598
1598
|
for pattern in 'Use Markdown only where it carries structure' 'metaprompter for itself'; do
|
|
1599
|
-
if ! grep -Fq "$pattern" config/skills/_shared/adapters/
|
|
1600
|
-
bad "
|
|
1599
|
+
if ! grep -Fq "$pattern" config/skills/_shared/adapters/codex.md; then
|
|
1600
|
+
bad "codex adapter missing official-guidance tactic: $pattern"
|
|
1601
1601
|
adapter_missing=1
|
|
1602
1602
|
fi
|
|
1603
1603
|
done
|
|
1604
1604
|
for pattern in 'high` or `xhigh` effort' 'report every issue you find' 'do not filter for importance or confidence' 'prefer concise positive examples' '<example>'; do
|
|
1605
|
-
if ! grep -Fq "$pattern" config/skills/_shared/adapters/
|
|
1606
|
-
bad "
|
|
1605
|
+
if ! grep -Fq "$pattern" config/skills/_shared/adapters/claude.md; then
|
|
1606
|
+
bad "claude adapter missing official-guidance tactic: $pattern"
|
|
1607
1607
|
adapter_missing=1
|
|
1608
1608
|
fi
|
|
1609
1609
|
done
|
|
1610
1610
|
for file in config/skills/devlyn:resolve/SKILL.md config/skills/devlyn:ideate/SKILL.md; do
|
|
1611
|
-
if ! grep -Fq '_shared/adapters/<
|
|
1611
|
+
if ! grep -Fq '_shared/adapters/<engine>.md' "$file"; then
|
|
1612
1612
|
bad "$file — missing per-engine adapter injection contract"
|
|
1613
1613
|
adapter_missing=1
|
|
1614
1614
|
fi
|