@benzotti/jedi 0.1.42 → 0.1.45

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.
Files changed (39) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/framework/agents/jdi-architect.md +30 -1
  4. package/framework/agents/jdi-backend.md +27 -0
  5. package/framework/agents/jdi-devops.md +33 -1
  6. package/framework/agents/jdi-frontend.md +27 -0
  7. package/framework/agents/jdi-perf-analyst.md +116 -0
  8. package/framework/agents/jdi-planner.md +39 -10
  9. package/framework/agents/jdi-pr-feedback.md +1 -1
  10. package/framework/agents/jdi-pr-generator.md +20 -0
  11. package/framework/agents/jdi-producer.md +196 -0
  12. package/framework/agents/{jdi-executor.md → jdi-programmer.md} +17 -2
  13. package/framework/agents/jdi-qa-tester.md +113 -0
  14. package/framework/agents/jdi-quality.md +30 -1
  15. package/framework/agents/jdi-security.md +118 -0
  16. package/framework/agents/jdi-ux-designer.md +39 -1
  17. package/framework/commands/build.md +148 -0
  18. package/framework/commands/commit.md +59 -8
  19. package/framework/commands/create-plan.md +172 -19
  20. package/framework/commands/generate-pr.md +80 -8
  21. package/framework/commands/implement-plan.md +205 -25
  22. package/framework/commands/pr-feedback.md +64 -9
  23. package/framework/commands/pr-review.md +76 -17
  24. package/framework/commands/quick.md +115 -10
  25. package/framework/components/meta/AgentBase.md +13 -0
  26. package/framework/components/meta/AgentRouter.md +122 -34
  27. package/framework/components/meta/AgentTeamsOrchestration.md +28 -10
  28. package/framework/components/meta/ComplexityRouter.md +31 -11
  29. package/framework/components/meta/SilentDiscovery.md +79 -0
  30. package/framework/components/meta/StrictnessProtocol.md +60 -0
  31. package/framework/components/meta/TeamRouter.md +1 -1
  32. package/framework/components/planning/TaskBreakdown.md +13 -1
  33. package/framework/components/planning/WaveComputation.md +1 -1
  34. package/framework/config/jdi-config.yaml +4 -4
  35. package/framework/jedi.md +4 -4
  36. package/framework/teams/engineering.md +3 -3
  37. package/framework/templates/PLAN.md +24 -0
  38. package/framework/templates/SUMMARY.md +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ # SilentDiscovery Component
2
+
3
+ The mandatory state-reading preamble that runs before any user-facing prompt in a JDI skill. Its purpose: make sure you never re-ask the user for facts that are already on disk.
4
+
5
+ When a command references `<JDI:SilentDiscovery />`, you MUST gather context from the filesystem before presenting any question, routing decision, or recommendation. Store what you find internally as `DISCOVERED_STATE` — do NOT print discovery output to the user unless a later step explicitly calls for it.
6
+
7
+ ---
8
+
9
+ ## What to Read
10
+
11
+ Read these files if they exist. If a file is missing, record that in `DISCOVERED_STATE` as `missing: true` and continue — do not error.
12
+
13
+ | File | Purpose |
14
+ |------|---------|
15
+ | `.jdi/config/state.yaml` | Current phase, plan, task, and status. Source of truth for "where are we?" |
16
+ | `.jdi/PROJECT.yaml` | Tech stack, project name, team configuration |
17
+ | `.jdi/REQUIREMENTS.yaml` | Risks, constraints, non-functional requirements |
18
+ | `.jdi/ROADMAP.yaml` | Phase structure, upcoming plans, milestones |
19
+ | `.jdi/plans/*.plan.md` (glob) | Existing plan index files — check frontmatter for `provides`, `status`, completion |
20
+ | `.jdi/codebase/SUMMARY.md` | Codebase index, if present |
21
+
22
+ Additionally, if the skill is worktree-aware, read:
23
+
24
+ | File | Purpose |
25
+ |------|---------|
26
+ | `.jdi/config/state.yaml → worktree` | Active worktree path and status |
27
+
28
+ ---
29
+
30
+ ## What to Derive
31
+
32
+ From the raw reads above, compute and store these derived fields in `DISCOVERED_STATE`:
33
+
34
+ - **`active_phase`** — current phase number and name (from ROADMAP.yaml + state.yaml position)
35
+ - **`next_plan_number`** — next available plan id in the active phase (scan existing plan files)
36
+ - **`tech_stack`** — from PROJECT.yaml
37
+ - **`open_risks`** — from REQUIREMENTS.yaml `risks:` block (empty list if none)
38
+ - **`prior_provides`** — union of all `provides:` fields from completed plans (cross-phase dependency map)
39
+ - **`returning_user`** — true if any prior plans are completed or the current plan is in a non-initial status
40
+ - **`missing_scaffolding`** — list of scaffolding files that didn't exist
41
+
42
+ ---
43
+
44
+ ## Discipline Rules
45
+
46
+ These rules are non-negotiable when this component is referenced:
47
+
48
+ 1. **Silent by default.** Never print `DISCOVERED_STATE` as a conversation opener. It informs your recommendations; it is not the first thing the user sees.
49
+
50
+ 2. **Never re-ask what's already known.** If a fact is in `DISCOVERED_STATE`, treat it as authoritative. Do not ask "what's your tech stack?" if `DISCOVERED_STATE.tech_stack` is set.
51
+
52
+ 3. **Missing ≠ empty.** A missing file means "I don't know" — not "the user has no preferences". Record `missing: true` and surface it only if a later step needs that file.
53
+
54
+ 4. **Surface selectively.** When routing or recommending, pull the specific field you need and mention it briefly ("I can see you're on phase {n}, plan {id}..."). Do not dump the whole `DISCOVERED_STATE` object.
55
+
56
+ 5. **Refresh, don't stale.** If the skill has multiple passes (e.g. `/jdi:build` option D re-runs discovery after user input), re-read the files — do not rely on the first pass's findings for the second pass.
57
+
58
+ ---
59
+
60
+ ## Pass-Through to Spawned Agents
61
+
62
+ When a skill that uses SilentDiscovery spawns a subagent (e.g. `create-plan` spawns `jdi-planner`), pass `DISCOVERED_STATE` into the spawn prompt as a named block:
63
+
64
+ ```
65
+ Context already discovered: {DISCOVERED_STATE serialised as yaml}
66
+ Do NOT re-read these scaffolding files. Surface open questions ONLY for facts you cannot infer from this block.
67
+ ```
68
+
69
+ This avoids the common failure where the orchestrator reads scaffolding, spawns an agent, and the agent reads the same scaffolding again.
70
+
71
+ ---
72
+
73
+ ## Usage
74
+
75
+ ```
76
+ <JDI:SilentDiscovery />
77
+ ```
78
+
79
+ Referenced at the top of a skill's numbered workflow, typically as step 1 or 2. Always runs before any user-facing prompt.
@@ -0,0 +1,60 @@
1
+ # StrictnessProtocol Component
2
+
3
+ The discipline every JDI skill follows. Referenced by user-invocable commands to enforce deterministic, auditable behaviour on every invocation.
4
+
5
+ When a command references `<JDI:StrictnessProtocol />`, these rules apply to the command's orchestration. They are **not suggestions** — they are the contract Claude honours for that skill.
6
+
7
+ ---
8
+
9
+ ## The Five Rules
10
+
11
+ 1. **Ask before assuming.** Never infer user intent from silence. If the skill requires information not visible on disk or in frontmatter, stop and ask. A missing answer is not permission to guess.
12
+
13
+ 2. **Present options, not mandates.** When multiple paths are valid, surface them as labelled choices (A / B / C) with the trade-off for each. The user picks — you do not pick for them and narrate.
14
+
15
+ 3. **The user decides strategy; you execute tactics.** Architecture, scope, priority, and verdict calls belong to the user. Naming, file placement, and code conventions belong to you. When in doubt which category a decision falls into, ask.
16
+
17
+ 4. **Never auto-run the next skill.** A skill's job ends when the user has a clear next action. Do not invoke downstream commands, spawn implementers after a plan approval, or chain skills silently. Each skill boundary is a human gate.
18
+
19
+ 5. **Adapt when the template doesn't fit.** The numbered workflow in each skill is the default path, not a prison. If the user's situation doesn't match any option, listen and adjust — but do so explicitly ("this doesn't fit option A/B/C/D — let me adapt…"), not by quietly drifting off-script.
20
+
21
+ ---
22
+
23
+ ## Inline Blocker Sentences
24
+
25
+ Skills that reference this component will include explicit waiting sentences between steps, such as:
26
+
27
+ - "Wait for the user's answer. Do not proceed until they respond."
28
+ - "Store findings internally. Do NOT print them to the user yet."
29
+ - "Stop here. Do not advance state until the user says `approved`."
30
+
31
+ These are hard gates. Treat them as you would a `return` statement in code: execution stops until the condition is met.
32
+
33
+ ---
34
+
35
+ ## Silent Discovery Discipline
36
+
37
+ Skills that also reference `<JDI:SilentDiscovery />` gather context from disk before asking questions. The two components compose:
38
+
39
+ - `SilentDiscovery` defines **what** to read and how to store it
40
+ - `StrictnessProtocol` defines **how** that discovered state shapes the conversation (never re-ask what's already on disk; surface findings only when relevant to the current step)
41
+
42
+ ---
43
+
44
+ ## Deviation Handling
45
+
46
+ If you need to deviate from a skill's numbered workflow — because the user's situation doesn't fit, because a required file is missing, or because an edge case isn't covered — announce the deviation explicitly:
47
+
48
+ > "This situation doesn't match the standard flow: {reason}. I'm going to {adapted approach} instead. Is that okay?"
49
+
50
+ Then wait for confirmation. Silent deviation is the failure mode this protocol exists to prevent.
51
+
52
+ ---
53
+
54
+ ## Usage
55
+
56
+ ```
57
+ <JDI:StrictnessProtocol />
58
+ ```
59
+
60
+ Referenced in the footer of user-invocable commands (`/jdi:build`, `/jdi:create-plan`, `/jdi:implement-plan`, etc.) as the final reassertion of the non-negotiables before the HARD STOP gate.
@@ -52,7 +52,7 @@ Activate members based on file types in the task:
52
52
  |---------|-----------|----------------|
53
53
  | Backend | `.php` files | jdi-backend |
54
54
  | Frontend | `.tsx`/`.ts` files | jdi-frontend |
55
- | Full-stack | Both PHP + TS | jdi-backend, jdi-frontend, jdi-executor |
55
+ | Full-stack | Both PHP + TS | jdi-backend, jdi-frontend, jdi-programmer |
56
56
  | Commit | Any | jdi-committer |
57
57
  | PR generation | Any | jdi-pr-generator |
58
58
  | Plan creation | — | jdi-planner, jdi-product-lead |
@@ -31,10 +31,12 @@ params:
31
31
  ## Task Format
32
32
 
33
33
  ```markdown
34
- <task id="{N}" type="auto|checkpoint:*" tdd="true|false" wave="{W}">
34
+ <task id="{N}" type="auto|checkpoint:*" tdd="true|false" wave="{W}" priority="must|should|nice">
35
35
 
36
36
  ## Task {N}: {Name}
37
37
 
38
+ **Priority:** must | should | nice
39
+
38
40
  **Objective:** {What this task accomplishes}
39
41
 
40
42
  **Files:**
@@ -81,3 +83,13 @@ When breaking down from REQUIREMENTS.yaml: map REQ-IDs to tasks, track which tas
81
83
  - **shallow**: 4-6 high-level tasks per feature
82
84
  - **standard**: 6-10 balanced tasks (default)
83
85
  - **deep**: 10-20 fine-grained tasks for complex/unfamiliar work
86
+
87
+ ---
88
+
89
+ ## Priority Bands
90
+
91
+ Every task MUST be tagged with one of three priority bands:
92
+
93
+ - **Must Have** (critical path — plan fails if not delivered)
94
+ - **Should Have** (planned but droppable under pressure)
95
+ - **Nice to Have** (delivered only with surplus capacity)
@@ -47,7 +47,7 @@ Assign waves based on dependency resolution. Plans in the same wave can execute
47
47
  ### Step 4: Output
48
48
 
49
49
  **Inline**: Update each plan's frontmatter `wave` field.
50
- **JSON**: Return wave structure for executor with wave number, plan IDs, and parallelism flag.
50
+ **JSON**: Return wave structure for programmer with wave number, plan IDs, and parallelism flag.
51
51
 
52
52
  ## Cross-Phase Dependencies
53
53
 
@@ -45,7 +45,7 @@ models:
45
45
  quality:
46
46
  planner: opus
47
47
  architect: opus
48
- executor: opus
48
+ programmer: opus
49
49
  verifier: sonnet
50
50
  researcher: sonnet
51
51
  phase_researcher: sonnet
@@ -57,7 +57,7 @@ models:
57
57
  balanced:
58
58
  planner: opus
59
59
  architect: opus
60
- executor: sonnet
60
+ programmer: sonnet
61
61
  verifier: sonnet
62
62
  researcher: sonnet
63
63
  phase_researcher: sonnet
@@ -69,7 +69,7 @@ models:
69
69
  budget:
70
70
  planner: sonnet
71
71
  architect: sonnet
72
- executor: sonnet
72
+ programmer: sonnet
73
73
  verifier: haiku
74
74
  researcher: haiku
75
75
  phase_researcher: haiku
@@ -80,7 +80,7 @@ models:
80
80
  # Override specific agents (null = use profile default)
81
81
  overrides:
82
82
  planner: null
83
- executor: null
83
+ programmer: null
84
84
  verifier: null
85
85
  researcher: null
86
86
 
package/framework/jedi.md CHANGED
@@ -26,7 +26,7 @@ model: opus
26
26
  >
27
27
  > The Claude Code Task tool **ONLY accepts `subagent_type="general-purpose"`** as a valid value.
28
28
  >
29
- > **If you use any other value** (e.g., `"jdi-executor"`, `"jdi-planner"`, or any custom type),
29
+ > **If you use any other value** (e.g., `"jdi-programmer"`, `"jdi-planner"`, or any custom type),
30
30
  > the agent will fail with this error:
31
31
  >
32
32
  > ```
@@ -39,7 +39,7 @@ Agent identity is passed via the **prompt parameter**, NOT the `subagent_type` p
39
39
 
40
40
  ```
41
41
  Task(
42
- prompt="You are jdi-executor. Read .jdi/framework/agents/jdi-executor.md for instructions. Execute: {task}",
42
+ prompt="You are jdi-programmer. Read .jdi/framework/agents/jdi-programmer.md for instructions. Execute: {task}",
43
43
  subagent_type="general-purpose" ← MUST be "general-purpose"
44
44
  )
45
45
  ```
@@ -49,7 +49,7 @@ Task(
49
49
  ```
50
50
  Task(
51
51
  prompt="Execute the plan...",
52
- subagent_type="jdi-executor" ← WRONG: Causes classifyHandoffIfNeeded error
52
+ subagent_type="jdi-programmer" ← WRONG: Causes classifyHandoffIfNeeded error
53
53
  )
54
54
  ```
55
55
 
@@ -212,7 +212,7 @@ Three profiles control which model each agent uses. Set in `.jdi/config/jdi-conf
212
212
 
213
213
  | Profile | When to Use | Opus Agents | Token Impact |
214
214
  |---------|-------------|-------------|--------------|
215
- | **quality** | Critical/complex work | planner, architect, executor, debugger | Highest — full Opus power |
215
+ | **quality** | Critical/complex work | planner, architect, programmer, debugger | Highest — full Opus power |
216
216
  | **balanced** | Typical development (default) | planner, architect | ~40% less than quality |
217
217
  | **budget** | Conserve quota | None | ~60% less than quality |
218
218
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: engineering
3
3
  description: Performs all engineering and coding tasks across backend and frontend
4
- members: [jdi-backend, jdi-frontend, jdi-architect, jdi-executor]
4
+ members: [jdi-backend, jdi-frontend, jdi-architect, jdi-programmer]
5
5
  ---
6
6
 
7
7
  # Engineering Team
@@ -17,11 +17,11 @@ All coding and engineering — implementing features, fixing bugs, refactoring,
17
17
  | Backend Engineer | `jdi-backend` | `.jdi/framework/agents/jdi-backend.md` |
18
18
  | Frontend Engineer | `jdi-frontend` | `.jdi/framework/agents/jdi-frontend.md` |
19
19
  | Systems Architect | `jdi-architect` | `.jdi/framework/agents/jdi-architect.md` |
20
- | Senior Fullstack Engineer | `jdi-executor` | `.jdi/framework/agents/jdi-executor.md` |
20
+ | Senior Fullstack Engineer | `jdi-programmer` | `.jdi/framework/agents/jdi-programmer.md` |
21
21
 
22
22
  ## Coordination
23
23
 
24
- Architect confirms approach → engineers implement within their stack → executor manages commits and deviation handling. All follow established project patterns.
24
+ Architect confirms approach → engineers implement within their stack → programmer manages commits and deviation handling. All follow established project patterns.
25
25
 
26
26
  ## Boundaries
27
27
 
@@ -9,6 +9,8 @@ type: implementation
9
9
  autonomous: true
10
10
  wave: 1
11
11
  gap_closure: false
12
+ sprint_goal: ""
13
+ carryover: []
12
14
 
13
15
  # Split plan task files (omit for legacy monolithic plans)
14
16
  task_files:
@@ -49,6 +51,12 @@ primary_agent: general-purpose
49
51
 
50
52
  ---
51
53
 
54
+ ## Sprint Goal
55
+
56
+ {One sentence describing what this plan achieves toward the active milestone.}
57
+
58
+ ---
59
+
52
60
  ## Context
53
61
 
54
62
  **Read before executing:**
@@ -61,6 +69,15 @@ primary_agent: general-purpose
61
69
  **Previous work:**
62
70
  - {What's already done that this builds on}
63
71
 
72
+ ### Carryover
73
+
74
+ | Task | Source Plan | Reason | New Estimate |
75
+ |------|-------------|--------|--------------|
76
+
77
+ ### Risks
78
+
79
+ Risks should be pulled from the `risks` block in `.jdi/REQUIREMENTS.yaml`. List the relevant ones here for execution-time reference.
80
+
64
81
  </section>
65
82
 
66
83
  ---
@@ -92,6 +109,13 @@ After all tasks complete, verify:
92
109
  - [ ] Tests pass: `{test command}`
93
110
  - [ ] Types check: `{type check command}`
94
111
 
112
+ ## Definition of Done
113
+
114
+ - [ ] All Must Have tasks complete
115
+ - [ ] All tasks pass acceptance criteria
116
+ - [ ] No S1/S2 bugs (per jdi-quality taxonomy)
117
+ - [ ] REQUIREMENTS.yaml updated for deviations
118
+
95
119
  ## Success Criteria
96
120
 
97
121
  This plan is complete when:
@@ -198,4 +198,4 @@ Phases that can now proceed:
198
198
 
199
199
  ---
200
200
 
201
- *Generated by jdi-executor at {timestamp}*
201
+ *Generated by jdi-programmer at {timestamp}*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benzotti/jedi",
3
- "version": "0.1.42",
3
+ "version": "0.1.45",
4
4
  "description": "JDI - Context-efficient AI development framework for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {