@dzhechkov/skills-feature-adr 1.3.28 → 1.3.30
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/README.md
CHANGED
|
@@ -117,11 +117,11 @@ knobs (via the workflow `args`, or offered interactively at the planning checkpo
|
|
|
117
117
|
| `planner: 'codex'` | 6 Plan | plan on Codex's top model (Claude fallback) |
|
|
118
118
|
| `coder: 'codex-fallback'` | 7 Code | Claude first; **if the Claude Code limit is exhausted mid-run → retry on Codex** |
|
|
119
119
|
| `qeReviewer: 'codex-fallback'` | 8 QE/tests | same fallback for the review/testing stage |
|
|
120
|
-
| `codexModel: '
|
|
120
|
+
| `codexModel: 'auto'` | — | which Codex model (`auto` default (Codex self-selects) · or an id your account exposes (e.g. `gpt-5.5`)) |
|
|
121
121
|
|
|
122
122
|
**Scenario — never stall on a rate limit:** a long L/XL feature hits the Claude Code session limit while
|
|
123
123
|
writing code. Without this the run stalls; with `coder: 'codex-fallback'` the pipeline logs *"Claude
|
|
124
|
-
unavailable (limit?) — falling back to Codex
|
|
124
|
+
unavailable (limit?) — falling back to Codex auto"* and finishes the code + tests on Codex, no
|
|
125
125
|
restart and no lost work.
|
|
126
126
|
|
|
127
127
|
```bash
|
|
@@ -135,7 +135,7 @@ printenv OPENAI_API_KEY | codex login --with-api-key
|
|
|
135
135
|
// ultracode (the deterministic workflow form): plan on Codex, code+QE fall back to Codex on Claude-limit:
|
|
136
136
|
Workflow({ scriptPath: '.claude/workflows/feature-adr.js',
|
|
137
137
|
args: { slug: 'add-oauth', description: '…', tier: 'M',
|
|
138
|
-
planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: '
|
|
138
|
+
planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: 'auto' } }) // 'auto' = Codex picks top; or pin e.g. 'gpt-5.5'
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
Omit the Codex knobs entirely for today's all-Claude behavior. The run result reports
|
package/docs/team-onboarding.md
CHANGED
|
@@ -179,14 +179,14 @@ In the **ultracode workflow form**, feature-adr can hand steps to [Codex](https:
|
|
|
179
179
|
2. **Never stall on a rate limit** — the killer feature: `coder: 'codex-fallback'` +
|
|
180
180
|
`qeReviewer: 'codex-fallback'`. Claude writes the code/tests as usual; but if a long L/XL run hits
|
|
181
181
|
the **Claude Code session limit mid-Step-7/8**, the pipeline auto-retries that step on Codex
|
|
182
|
-
(`
|
|
182
|
+
(`auto` by default) instead of stalling — no restart, no lost work.
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
185
|
# one-time headless login (VPS, no browser):
|
|
186
186
|
codex login --device-auth # approve the printed code+URL on your phone/laptop
|
|
187
187
|
|
|
188
188
|
# then, when launching a run, pass the knobs (or accept the interactive pre-flight offer):
|
|
189
|
-
# planner: 'codex' | coder: 'codex-fallback' | qeReviewer: 'codex-fallback' | codexModel: '
|
|
189
|
+
# planner: 'codex' | coder: 'codex-fallback' | qeReviewer: 'codex-fallback' | codexModel: 'auto'
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
Omit the knobs for the all-Claude default. Full reference: `.claude/rules/feature-adr-ultracode.md`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/skills-feature-adr",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.30",
|
|
4
4
|
"description": "Adaptive Feature Development skill pack for Claude Code — 11-step pipeline with Complexity Router (S/M/L/XL), ADR-driven architecture, 15 agentic-qe skills, multi-agent fleet QE. Supports --full-qe, --full-qe-extended, --with-learning, and --knowledge-extractor modes.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"skills-feature-adr": "./bin/cli.js"
|
|
@@ -36,7 +36,7 @@ overridable via `args`:
|
|
|
36
36
|
| `planner` | 6 (Plan) | `claude` (default) · `codex` | `codex` → Step-6 plans on Codex, Claude fallback |
|
|
37
37
|
| `coder` | 7 (Code) | `claude` (default) · `codex` · `codex-fallback` | `codex-fallback` → Claude first, **on limit-exhaustion (null) → Codex** |
|
|
38
38
|
| `qeReviewer` | 8 (QE/tests) | `claude` (default) · `codex` · `codex-fallback` | same fallback, for the QE/testing stage |
|
|
39
|
-
| `codexModel` | — | `
|
|
39
|
+
| `codexModel` | — | `auto` (default — Codex self-selects the top available) · or a specific id your account exposes (e.g. `gpt-5.5`, `gpt-5.4`) | which Codex model to use |
|
|
40
40
|
|
|
41
41
|
The result reports `plannerUsed` / `coderUsed` / `qeReviewerUsed` / `codexModel` so you can see who did what.
|
|
42
42
|
|
|
@@ -48,24 +48,24 @@ If `ready`, ASK the user once (skip all of this if not ready — Claude does eve
|
|
|
48
48
|
1. *"Plan (Step 6) on the top Codex model?"* → set `planner: 'codex'`.
|
|
49
49
|
2. *"Fall back to Codex for code + tests/QE (Step 7/8) if the Claude Code limit is exhausted?"* →
|
|
50
50
|
set `coder: 'codex-fallback'`, `qeReviewer: 'codex-fallback'`.
|
|
51
|
-
3. *"Which Codex model?"* (`
|
|
51
|
+
3. *"Which Codex model?"* (`auto` — Codex self-selects — or a specific id your account exposes; model ids are account/version-specific, so verify via the runtime rather than assuming) → **write it into codex config so the
|
|
52
52
|
`codex:codex-rescue` runtime picks it up**, then pass `codexModel`:
|
|
53
53
|
```bash
|
|
54
|
-
printf '\nmodel = "gpt-5
|
|
54
|
+
printf '\nmodel = "gpt-5.5"\n' >> ~/.codex/config.toml # pin a REAL id your account has (auto = default; verify: ask the codex runtime what -m ids it accepts)
|
|
55
55
|
```
|
|
56
56
|
For the interactive SKILL (plain `/feature-adr`), make the same three offers at the planning checkpoint.
|
|
57
57
|
|
|
58
58
|
**Scenario (the reason this exists):** a long L/XL run hits the Claude Code session limit mid-Step-7.
|
|
59
59
|
Without this, the Code agent returns null and the run stalls. With `coder: 'codex-fallback'`, feature-adr
|
|
60
|
-
detects the null, logs *"Claude unavailable (limit?) — falling back to Codex
|
|
60
|
+
detects the null, logs *"Claude unavailable (limit?) — falling back to Codex auto"*, and finishes
|
|
61
61
|
the code + tests on Codex — no restart, no lost work.
|
|
62
62
|
|
|
63
63
|
**Example invocations:**
|
|
64
64
|
```js
|
|
65
|
-
// Plan on Codex, code+QE fall back to Codex only if Claude runs out,
|
|
65
|
+
// Plan on Codex, code+QE fall back to Codex only if Claude runs out, auto:
|
|
66
66
|
Workflow({ scriptPath: '.claude/workflows/feature-adr.js',
|
|
67
67
|
args: { slug: 'add-x', description: '…', tier: 'M',
|
|
68
|
-
planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: '
|
|
68
|
+
planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: 'auto' } }) // 'auto' = Codex picks top; or pin e.g. 'gpt-5.5'
|
|
69
69
|
|
|
70
70
|
// All-Claude (the default — omit the Codex knobs entirely):
|
|
71
71
|
Workflow({ scriptPath: '.claude/workflows/feature-adr.js', args: { slug: 'add-x', description: '…', tier: 'M' } })
|
|
@@ -363,13 +363,13 @@ to Codex — always ASKING first, always with a Claude fallback (never blocks):
|
|
|
363
363
|
- **Code (Step 7) + tests/QE (Step 8) FALLBACK** → `args.coder: 'codex-fallback'`, `args.qeReviewer:
|
|
364
364
|
'codex-fallback'`: Claude runs first, and only if the **Claude Code limit is exhausted mid-run** (the
|
|
365
365
|
agent returns null) does the SAME task retry on Codex — so a long build never stalls on a rate limit.
|
|
366
|
-
- **Model choice** → `args.codexModel` (`
|
|
366
|
+
- **Model choice** → `args.codexModel` (`auto` default (Codex self-selects) · or an id your account exposes (e.g. `gpt-5.5`)).
|
|
367
367
|
|
|
368
368
|
*Scenario:* an L/XL run hits the session limit during coding → with `coder: 'codex-fallback'` feature-adr
|
|
369
|
-
logs *"Claude unavailable (limit?) — falling back to Codex
|
|
369
|
+
logs *"Claude unavailable (limit?) — falling back to Codex auto"* and finishes on Codex, no restart.
|
|
370
370
|
|
|
371
371
|
*Example:* `Workflow({ scriptPath: '.claude/workflows/feature-adr.js', args: { slug, description, tier:
|
|
372
|
-
'M', planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: '
|
|
372
|
+
'M', planner: 'codex', coder: 'codex-fallback', qeReviewer: 'codex-fallback', codexModel: 'auto' } }) // 'auto' = Codex picks top; or pin e.g. 'gpt-5.5'`.
|
|
373
373
|
|
|
374
374
|
Pre-flight, if Codex is `ready` (`codex-companion setup --json`), the orchestrator asks these three
|
|
375
375
|
before launching; plain `/feature-adr` offers the same at the planning checkpoint. Omit the Codex knobs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const meta = {
|
|
2
2
|
name: 'feature-adr',
|
|
3
|
-
description: 'Canonical /feature-adr --full-qe-extended pipeline as a reusable workflow: router+RECALL then design(ADR, applies learned patterns) then plan then code then agentic-qe QE+TEACH, producing features/<slug>/00-09 artifacts. MANDATORY in-process self-learning loop (Step-0 recall, apply, Step-8 teach). OPTIONAL Codex routing: args.planner=codex (Step-6), args.coder/qeReviewer='codex-fallback' (Step-7/8 fall back to Codex
|
|
3
|
+
description: 'Canonical /feature-adr --full-qe-extended pipeline as a reusable workflow: router+RECALL then design(ADR, applies learned patterns) then plan then code then agentic-qe QE+TEACH, producing features/<slug>/00-09 artifacts. MANDATORY in-process self-learning loop (Step-0 recall, apply, Step-8 teach). OPTIONAL Codex routing: args.planner=codex (Step-6), args.coder/qeReviewer='codex-fallback' (Step-7/8 fall back to Codex when Claude limits exhaust; args.codexModel default 'auto' (Codex self-selects top; account-specific)). Hybrid checkpoints (S/M autonomous; L/XL stop-after-plan).',
|
|
4
4
|
whenToUse: 'ultracode + a feature implementation. Invoke via Workflow({scriptPath:".claude/workflows/feature-adr.js", args:{slug, description, code, tier, stopAfter, planner, coder, qeReviewer, codexModel}}) instead of an ad-hoc orchestration, so every feature ships with an ADR + inline agentic-qe QE + self-learning.',
|
|
5
5
|
phases: [
|
|
6
6
|
{ title: 'Router', detail: 'Step 0 - classify + self-learning recall' },
|
|
@@ -89,9 +89,11 @@ if (stopHere) {
|
|
|
89
89
|
// Codex fallback config (opt-in). CODER/QE_REVIEWER ∈ 'claude'|'codex'|'codex-fallback'. On
|
|
90
90
|
// 'codex-fallback' the Claude agent runs FIRST; if it returns null (e.g. the Claude Code session limit
|
|
91
91
|
// is exhausted mid-code/mid-QE — exactly the failure we hit before), the SAME task is retried on the
|
|
92
|
-
// codex:codex-rescue runtime
|
|
93
|
-
//
|
|
94
|
-
|
|
92
|
+
// codex:codex-rescue runtime. args.codexModel is DEFAULT 'auto' (Codex self-selects the top model
|
|
93
|
+
// available to the account — model ids are account/version-specific and move ahead of any static
|
|
94
|
+
// default, so 'auto' is the portable choice). To hard-pin a specific id (e.g. this account's top is
|
|
95
|
+
// gpt-5.5), the orchestrator writes it into ~/.codex/config.toml at pre-flight; the hint below only nudges.
|
|
96
|
+
const CODEX_MODEL = A.codexModel || 'auto'
|
|
95
97
|
const CODEX_HINT = ' (If you are the Codex runtime, prefer the ' + CODEX_MODEL + ' model.)'
|
|
96
98
|
const CODER = (A.coder === 'codex' || A.coder === 'codex-fallback') ? A.coder : 'claude'
|
|
97
99
|
const QE_REVIEWER = (A.qeReviewer === 'codex' || A.qeReviewer === 'codex-fallback') ? A.qeReviewer : 'claude'
|