@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.
- package/README.md +1 -1
- package/dist/index.js +1 -1
- package/framework/agents/jdi-architect.md +30 -1
- package/framework/agents/jdi-backend.md +27 -0
- package/framework/agents/jdi-devops.md +33 -1
- package/framework/agents/jdi-frontend.md +27 -0
- package/framework/agents/jdi-perf-analyst.md +116 -0
- package/framework/agents/jdi-planner.md +39 -10
- package/framework/agents/jdi-pr-feedback.md +1 -1
- package/framework/agents/jdi-pr-generator.md +20 -0
- package/framework/agents/jdi-producer.md +196 -0
- package/framework/agents/{jdi-executor.md → jdi-programmer.md} +17 -2
- package/framework/agents/jdi-qa-tester.md +113 -0
- package/framework/agents/jdi-quality.md +30 -1
- package/framework/agents/jdi-security.md +118 -0
- package/framework/agents/jdi-ux-designer.md +39 -1
- package/framework/commands/build.md +148 -0
- package/framework/commands/commit.md +59 -8
- package/framework/commands/create-plan.md +172 -19
- package/framework/commands/generate-pr.md +80 -8
- package/framework/commands/implement-plan.md +205 -25
- package/framework/commands/pr-feedback.md +64 -9
- package/framework/commands/pr-review.md +76 -17
- package/framework/commands/quick.md +115 -10
- package/framework/components/meta/AgentBase.md +13 -0
- package/framework/components/meta/AgentRouter.md +122 -34
- package/framework/components/meta/AgentTeamsOrchestration.md +28 -10
- package/framework/components/meta/ComplexityRouter.md +31 -11
- package/framework/components/meta/SilentDiscovery.md +79 -0
- package/framework/components/meta/StrictnessProtocol.md +60 -0
- package/framework/components/meta/TeamRouter.md +1 -1
- package/framework/components/planning/TaskBreakdown.md +13 -1
- package/framework/components/planning/WaveComputation.md +1 -1
- package/framework/config/jdi-config.yaml +4 -4
- package/framework/jedi.md +4 -4
- package/framework/teams/engineering.md +3 -3
- package/framework/templates/PLAN.md +24 -0
- package/framework/templates/SUMMARY.md +1 -1
- 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-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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,
|
|
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-
|
|
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-
|
|
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 →
|
|
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:
|