orchestr8 2.8.0 → 3.0.0
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/.blueprint/agents/AGENT_BA_CASS.md +18 -34
- package/.blueprint/agents/AGENT_DEVELOPER_CODEY.md +21 -28
- package/.blueprint/agents/AGENT_SPECIFICATION_ALEX.md +6 -0
- package/.blueprint/agents/AGENT_TESTER_NIGEL.md +5 -3
- package/.blueprint/agents/WHAT_WE_STAND_FOR.md +0 -0
- package/.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md +263 -0
- package/.blueprint/features/feature_interactive-alex/IMPLEMENTATION_PLAN.md +69 -0
- package/.blueprint/features/feature_interactive-alex/handoff-alex.md +19 -0
- package/.blueprint/features/feature_interactive-alex/handoff-cass.md +21 -0
- package/.blueprint/features/feature_interactive-alex/handoff-nigel.md +19 -0
- package/.blueprint/features/feature_interactive-alex/story-flag-routing.md +54 -0
- package/.blueprint/features/feature_interactive-alex/story-iterative-drafting.md +65 -0
- package/.blueprint/features/feature_interactive-alex/story-pipeline-integration.md +66 -0
- package/.blueprint/features/feature_interactive-alex/story-session-lifecycle.md +75 -0
- package/.blueprint/features/feature_interactive-alex/story-system-spec-creation.md +57 -0
- package/.blueprint/prompts/codey-implement-runtime.md +1 -1
- package/.blueprint/prompts/nigel-runtime.md +1 -1
- package/.blueprint/ways_of_working/DEVELOPMENT_RITUAL.md +4 -4
- package/README.md +31 -0
- package/SKILL.md +35 -1
- package/bin/cli.js +28 -0
- package/package.json +2 -2
- package/src/index.js +61 -1
- package/src/init.js +21 -3
- package/src/interactive.js +338 -0
- package/src/stack.js +320 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Handoff Summary
|
|
2
|
+
**For:** Cass
|
|
3
|
+
**Feature:** interactive-alex
|
|
4
|
+
|
|
5
|
+
### Key Decisions
|
|
6
|
+
- Interactive mode triggers automatically when specs are missing, or explicitly via `--interactive` flag
|
|
7
|
+
- Session flow: context gathering → clarifying questions → iterative drafting → finalization
|
|
8
|
+
- In-memory state only (no persistence for v1)
|
|
9
|
+
- Supports both SYSTEM_SPEC.md and FEATURE_SPEC.md creation
|
|
10
|
+
- Integrates with existing `--pause-after=alex` for exit control
|
|
11
|
+
|
|
12
|
+
### Files Created
|
|
13
|
+
- .blueprint/features/feature_interactive-alex/FEATURE_SPEC.md
|
|
14
|
+
|
|
15
|
+
### Open Questions
|
|
16
|
+
- None - all resolved in spec
|
|
17
|
+
|
|
18
|
+
### Critical Context
|
|
19
|
+
Focus stories on: flag parsing/routing, conversational session management, iterative spec drafting, pipeline integration. The feature modifies SKILL.md routing and adds a new interaction pattern while keeping downstream agents (Cass, Nigel, Codey) unchanged.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Handoff Summary
|
|
2
|
+
**For:** Nigel
|
|
3
|
+
**Feature:** interactive-alex
|
|
4
|
+
|
|
5
|
+
### Key Decisions
|
|
6
|
+
- Split into 5 stories covering distinct concerns: routing, session lifecycle, drafting, pipeline integration, system spec creation
|
|
7
|
+
- Each story has 5-7 testable acceptance criteria in Given/When/Then format
|
|
8
|
+
- Focused on observable behavior and user commands
|
|
9
|
+
|
|
10
|
+
### Files Created
|
|
11
|
+
- story-flag-routing.md - `--interactive` flag parsing and auto-detection
|
|
12
|
+
- story-session-lifecycle.md - Session commands (/approve, /change, /skip, /restart, /abort, /done)
|
|
13
|
+
- story-iterative-drafting.md - Context gathering, questions, section drafting
|
|
14
|
+
- story-pipeline-integration.md - Spec output, handoff, queue, history
|
|
15
|
+
- story-system-spec-creation.md - Interactive SYSTEM_SPEC.md creation when missing
|
|
16
|
+
|
|
17
|
+
### Open Questions
|
|
18
|
+
- None
|
|
19
|
+
|
|
20
|
+
### Critical Context
|
|
21
|
+
Tests should focus on SKILL.md routing logic and the new `src/interactive.js` module. Mock the conversation loop for unit tests; the iterative drafting can use state machine patterns.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Handoff Summary
|
|
2
|
+
**For:** Codey
|
|
3
|
+
**Feature:** interactive-alex
|
|
4
|
+
|
|
5
|
+
### Key Decisions
|
|
6
|
+
- 29 tests covering all 5 stories with 100% AC coverage
|
|
7
|
+
- Tests use Node.js built-in test runner (node:test)
|
|
8
|
+
- Mock-based testing for session state machine and routing
|
|
9
|
+
- State machine pattern for session lifecycle
|
|
10
|
+
|
|
11
|
+
### Files Created
|
|
12
|
+
- test/artifacts/feature_interactive-alex/test-spec.md
|
|
13
|
+
- test/feature_interactive-alex.test.js
|
|
14
|
+
|
|
15
|
+
### Open Questions
|
|
16
|
+
- None
|
|
17
|
+
|
|
18
|
+
### Critical Context
|
|
19
|
+
Create `src/interactive.js` with session state machine (idle → gathering → questioning → drafting → finalizing). Update SKILL.md routing logic to check for `--interactive` flag and missing specs. All tests currently pass with stubs - implement the actual logic.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# User Story: Flag Parsing & Mode Routing
|
|
2
|
+
|
|
3
|
+
## Story
|
|
4
|
+
|
|
5
|
+
**As a** developer using orchestr8,
|
|
6
|
+
**I want** the `/implement-feature` command to detect when interactive mode is needed and route accordingly,
|
|
7
|
+
**so that** I get a collaborative spec experience for new/unclear features without manual flag management.
|
|
8
|
+
|
|
9
|
+
## Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
### AC-1: Explicit Interactive Flag
|
|
12
|
+
|
|
13
|
+
**Given** a user invokes `/implement-feature "my-feature" --interactive`
|
|
14
|
+
**When** the command parses flags
|
|
15
|
+
**Then** interactive mode is activated regardless of existing spec files
|
|
16
|
+
|
|
17
|
+
### AC-2: Auto-Detect Missing System Spec
|
|
18
|
+
|
|
19
|
+
**Given** a user invokes `/implement-feature "my-feature"` without `--interactive`
|
|
20
|
+
**And** `.blueprint/system_specification/SYSTEM_SPEC.md` does not exist
|
|
21
|
+
**When** the pipeline routing logic runs
|
|
22
|
+
**Then** interactive mode is activated for system spec creation
|
|
23
|
+
|
|
24
|
+
### AC-3: Auto-Detect Missing Feature Spec
|
|
25
|
+
|
|
26
|
+
**Given** a user invokes `/implement-feature "my-feature"` without `--interactive`
|
|
27
|
+
**And** `SYSTEM_SPEC.md` exists
|
|
28
|
+
**And** `.blueprint/features/feature_my-feature/FEATURE_SPEC.md` does not exist
|
|
29
|
+
**When** the pipeline routing logic runs
|
|
30
|
+
**Then** interactive mode is activated for feature spec creation
|
|
31
|
+
|
|
32
|
+
### AC-4: Autonomous Mode When Specs Exist
|
|
33
|
+
|
|
34
|
+
**Given** a user invokes `/implement-feature "my-feature"` without `--interactive`
|
|
35
|
+
**And** both `SYSTEM_SPEC.md` and `FEATURE_SPEC.md` exist
|
|
36
|
+
**When** the pipeline routing logic runs
|
|
37
|
+
**Then** Alex runs in autonomous (non-interactive) mode
|
|
38
|
+
|
|
39
|
+
### AC-5: Combined Flags
|
|
40
|
+
|
|
41
|
+
**Given** a user invokes `/implement-feature "my-feature" --interactive --pause-after=alex`
|
|
42
|
+
**When** the command parses flags
|
|
43
|
+
**Then** interactive mode is activated
|
|
44
|
+
**And** the pipeline will pause after Alex completes (before Cass)
|
|
45
|
+
|
|
46
|
+
## Out of Scope
|
|
47
|
+
|
|
48
|
+
- `--no-interactive` flag to force autonomous mode (users can create placeholder specs)
|
|
49
|
+
- Interactive modes for agents other than Alex
|
|
50
|
+
- Flag validation errors (handled by existing CLI parsing)
|
|
51
|
+
|
|
52
|
+
## References
|
|
53
|
+
|
|
54
|
+
- Feature Spec: `.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md` (Section 4.1)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# User Story: Iterative Spec Drafting
|
|
2
|
+
|
|
3
|
+
## Story
|
|
4
|
+
|
|
5
|
+
**As a** developer in an interactive session,
|
|
6
|
+
**I want** Alex to gather context, ask targeted questions, and draft spec sections incrementally,
|
|
7
|
+
**so that** the resulting specification accurately captures my intent with minimal revision cycles.
|
|
8
|
+
|
|
9
|
+
## Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
### AC-1: Context Gathering Phase
|
|
12
|
+
|
|
13
|
+
**Given** an interactive session has started
|
|
14
|
+
**When** the user provides their initial feature description
|
|
15
|
+
**Then** Alex acknowledges understanding by summarizing the core intent
|
|
16
|
+
**And** Alex identifies 2-4 information gaps relative to the FEATURE_SPEC template
|
|
17
|
+
|
|
18
|
+
### AC-2: Clarifying Questions
|
|
19
|
+
|
|
20
|
+
**Given** Alex has identified information gaps
|
|
21
|
+
**When** Alex asks clarifying questions
|
|
22
|
+
**Then** questions are presented in a single batch (2-4 questions)
|
|
23
|
+
**And** questions are specific and actionable (not open-ended)
|
|
24
|
+
**And** Alex waits for user responses before proceeding
|
|
25
|
+
|
|
26
|
+
### AC-3: Section-by-Section Drafting
|
|
27
|
+
|
|
28
|
+
**Given** Alex has gathered sufficient context
|
|
29
|
+
**When** Alex drafts spec sections
|
|
30
|
+
**Then** sections are drafted incrementally (Intent first, then Scope, then Actors, etc.)
|
|
31
|
+
**And** after each section, Alex presents the draft
|
|
32
|
+
**And** Alex asks: "Does this capture your intent? Any changes?"
|
|
33
|
+
|
|
34
|
+
### AC-4: Revision Handling
|
|
35
|
+
|
|
36
|
+
**Given** Alex has presented a draft section
|
|
37
|
+
**And** the user requests changes via `/change <feedback>`
|
|
38
|
+
**When** Alex revises the section
|
|
39
|
+
**Then** Alex incorporates the specific feedback
|
|
40
|
+
**And** Alex presents the revised draft
|
|
41
|
+
**And** Alex asks for approval again
|
|
42
|
+
|
|
43
|
+
### AC-5: Progress Indication
|
|
44
|
+
|
|
45
|
+
**Given** an interactive session is active
|
|
46
|
+
**When** Alex transitions between sections
|
|
47
|
+
**Then** Alex indicates which sections are complete
|
|
48
|
+
**And** Alex indicates which sections remain
|
|
49
|
+
|
|
50
|
+
### AC-6: Concise Responses
|
|
51
|
+
|
|
52
|
+
**Given** Alex is drafting or responding in the session
|
|
53
|
+
**When** Alex produces conversational output
|
|
54
|
+
**Then** each response is under 200 words
|
|
55
|
+
**And** focus is on actionable content, not filler
|
|
56
|
+
|
|
57
|
+
## Out of Scope
|
|
58
|
+
|
|
59
|
+
- Full-spec-at-once drafting mode
|
|
60
|
+
- Configurable question count (fixed at 2-4)
|
|
61
|
+
- Template customization during session
|
|
62
|
+
|
|
63
|
+
## References
|
|
64
|
+
|
|
65
|
+
- Feature Spec: `.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md` (Section 4.3)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# User Story: Pipeline Integration
|
|
2
|
+
|
|
3
|
+
## Story
|
|
4
|
+
|
|
5
|
+
**As a** developer completing an interactive session,
|
|
6
|
+
**I want** the interactive mode to integrate seamlessly with the existing pipeline infrastructure,
|
|
7
|
+
**so that** downstream agents receive proper handoffs and the pipeline can resume or record history as expected.
|
|
8
|
+
|
|
9
|
+
## Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
### AC-1: Spec File Output
|
|
12
|
+
|
|
13
|
+
**Given** an interactive session completes successfully (via `/approve` on final section or `/done`)
|
|
14
|
+
**When** Alex finalizes the spec
|
|
15
|
+
**Then** FEATURE_SPEC.md is written to `{FEAT_DIR}/FEATURE_SPEC.md`
|
|
16
|
+
**And** the file includes all completed sections
|
|
17
|
+
**And** skipped sections are marked as "TBD"
|
|
18
|
+
**And** the file includes a note: "Created via interactive session"
|
|
19
|
+
|
|
20
|
+
### AC-2: Handoff Artifact
|
|
21
|
+
|
|
22
|
+
**Given** an interactive session completes successfully
|
|
23
|
+
**When** Alex writes the spec file
|
|
24
|
+
**Then** Alex also produces `handoff-alex.md` in the feature directory
|
|
25
|
+
**And** the handoff includes key decisions, files created, and open questions
|
|
26
|
+
|
|
27
|
+
### AC-3: Queue Update
|
|
28
|
+
|
|
29
|
+
**Given** an interactive session completes successfully
|
|
30
|
+
**When** the pipeline continues
|
|
31
|
+
**Then** the queue is updated with the feature moving from `alexQueue` to `cassQueue`
|
|
32
|
+
**And** `current.stage` reflects "cass" (or the next applicable stage)
|
|
33
|
+
|
|
34
|
+
### AC-4: History Recording
|
|
35
|
+
|
|
36
|
+
**Given** an interactive session completes (success or abort)
|
|
37
|
+
**When** history is recorded (unless `--no-history` flag present)
|
|
38
|
+
**Then** the `pipeline-history.json` entry includes `mode: "interactive"`
|
|
39
|
+
**And** the entry includes question count, revision count, and session duration
|
|
40
|
+
|
|
41
|
+
### AC-5: Pause After Alex
|
|
42
|
+
|
|
43
|
+
**Given** an interactive session completes successfully
|
|
44
|
+
**And** `--pause-after=alex` flag was provided
|
|
45
|
+
**When** Alex finishes
|
|
46
|
+
**Then** the pipeline pauses before spawning Cass
|
|
47
|
+
**And** user can review the spec before continuing
|
|
48
|
+
|
|
49
|
+
### AC-6: Continue to Downstream Agents
|
|
50
|
+
|
|
51
|
+
**Given** an interactive session completes successfully
|
|
52
|
+
**And** `--pause-after=alex` flag was NOT provided
|
|
53
|
+
**When** Alex finishes
|
|
54
|
+
**Then** the pipeline continues automatically
|
|
55
|
+
**And** Cass is spawned with the produced FEATURE_SPEC.md as input
|
|
56
|
+
|
|
57
|
+
## Out of Scope
|
|
58
|
+
|
|
59
|
+
- Changes to Cass, Nigel, or Codey agent behaviour
|
|
60
|
+
- Parallel pipeline execution
|
|
61
|
+
- Multi-feature batch processing
|
|
62
|
+
|
|
63
|
+
## References
|
|
64
|
+
|
|
65
|
+
- Feature Spec: `.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md` (Section 6)
|
|
66
|
+
- System Spec: `.blueprint/system_specification/SYSTEM_SPEC.md` (Sections 6-7)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# User Story: Interactive Session Lifecycle
|
|
2
|
+
|
|
3
|
+
## Story
|
|
4
|
+
|
|
5
|
+
**As a** developer entering interactive mode,
|
|
6
|
+
**I want** a clear session lifecycle with explicit commands for controlling the conversation,
|
|
7
|
+
**so that** I can navigate the spec creation process efficiently and exit gracefully when needed.
|
|
8
|
+
|
|
9
|
+
## Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
### AC-1: Session Initialization
|
|
12
|
+
|
|
13
|
+
**Given** interactive mode is activated (explicit flag or auto-detect)
|
|
14
|
+
**When** the session starts
|
|
15
|
+
**Then** Alex reads system spec (if exists), business context, and feature template
|
|
16
|
+
**And** Alex presents an opening prompt: "Describe the feature you want to build. What problem does it solve and for whom?"
|
|
17
|
+
|
|
18
|
+
### AC-2: Approve Command
|
|
19
|
+
|
|
20
|
+
**Given** an interactive session is active
|
|
21
|
+
**And** Alex has presented a draft section
|
|
22
|
+
**When** the user responds with `/approve` or `yes`
|
|
23
|
+
**Then** the current section is marked complete
|
|
24
|
+
**And** Alex proceeds to the next section
|
|
25
|
+
|
|
26
|
+
### AC-3: Change Command
|
|
27
|
+
|
|
28
|
+
**Given** an interactive session is active
|
|
29
|
+
**And** Alex has presented a draft section
|
|
30
|
+
**When** the user responds with `/change <feedback>`
|
|
31
|
+
**Then** Alex revises the current section based on the feedback
|
|
32
|
+
**And** Alex presents the revised draft for approval
|
|
33
|
+
|
|
34
|
+
### AC-4: Skip Command
|
|
35
|
+
|
|
36
|
+
**Given** an interactive session is active
|
|
37
|
+
**And** Alex has presented a draft section
|
|
38
|
+
**When** the user responds with `/skip`
|
|
39
|
+
**Then** the current section is marked as "TBD" in the spec
|
|
40
|
+
**And** Alex proceeds to the next section
|
|
41
|
+
|
|
42
|
+
### AC-5: Restart Command
|
|
43
|
+
|
|
44
|
+
**Given** an interactive session is active
|
|
45
|
+
**And** Alex is working on a section
|
|
46
|
+
**When** the user responds with `/restart`
|
|
47
|
+
**Then** Alex discards the current section draft
|
|
48
|
+
**And** Alex starts the section from scratch with fresh questions
|
|
49
|
+
|
|
50
|
+
### AC-6: Abort Command
|
|
51
|
+
|
|
52
|
+
**Given** an interactive session is active
|
|
53
|
+
**When** the user responds with `/abort`
|
|
54
|
+
**Then** the session terminates immediately
|
|
55
|
+
**And** no spec file is written to disk
|
|
56
|
+
**And** the pipeline exits without proceeding to downstream agents
|
|
57
|
+
|
|
58
|
+
### AC-7: Done Command
|
|
59
|
+
|
|
60
|
+
**Given** an interactive session is active
|
|
61
|
+
**And** at least Intent, Scope, and Actors sections are complete or skipped
|
|
62
|
+
**When** the user responds with `/done`
|
|
63
|
+
**Then** Alex finalizes the spec with completed sections
|
|
64
|
+
**And** skipped sections are marked as "TBD"
|
|
65
|
+
**And** the spec file is written to disk
|
|
66
|
+
|
|
67
|
+
## Out of Scope
|
|
68
|
+
|
|
69
|
+
- Session persistence between interrupted sessions
|
|
70
|
+
- Timeout handling (session continues until user acts)
|
|
71
|
+
- Multi-user concurrent sessions
|
|
72
|
+
|
|
73
|
+
## References
|
|
74
|
+
|
|
75
|
+
- Feature Spec: `.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md` (Section 4.4)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# User Story: Interactive System Spec Creation
|
|
2
|
+
|
|
3
|
+
## Story
|
|
4
|
+
|
|
5
|
+
**As a** developer initializing a new project without a system specification,
|
|
6
|
+
**I want** Alex to guide me through creating a SYSTEM_SPEC.md interactively,
|
|
7
|
+
**so that** I establish the project's boundaries and constraints before creating feature specs.
|
|
8
|
+
|
|
9
|
+
## Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
### AC-1: System Spec Auto-Detection
|
|
12
|
+
|
|
13
|
+
**Given** a user invokes `/implement-feature "my-feature"`
|
|
14
|
+
**And** `.blueprint/system_specification/SYSTEM_SPEC.md` does not exist
|
|
15
|
+
**When** the pipeline checks prerequisites
|
|
16
|
+
**Then** interactive mode activates for system spec creation (not feature spec)
|
|
17
|
+
|
|
18
|
+
### AC-2: System Spec Session Flow
|
|
19
|
+
|
|
20
|
+
**Given** interactive system spec mode is active
|
|
21
|
+
**When** Alex starts the session
|
|
22
|
+
**Then** Alex asks about: purpose, actors, system boundaries, and governing rules
|
|
23
|
+
**And** Alex drafts SYSTEM_SPEC.md sections incrementally
|
|
24
|
+
**And** the same session commands apply (`/approve`, `/change`, `/skip`, `/restart`, `/abort`, `/done`)
|
|
25
|
+
|
|
26
|
+
### AC-3: System Spec Output Location
|
|
27
|
+
|
|
28
|
+
**Given** an interactive system spec session completes successfully
|
|
29
|
+
**When** Alex writes the spec
|
|
30
|
+
**Then** the file is written to `.blueprint/system_specification/SYSTEM_SPEC.md`
|
|
31
|
+
**And** the file follows the SYSTEM_SPEC template structure
|
|
32
|
+
|
|
33
|
+
### AC-4: Pipeline Gate Satisfied
|
|
34
|
+
|
|
35
|
+
**Given** SYSTEM_SPEC.md is created via interactive session
|
|
36
|
+
**When** the user re-invokes `/implement-feature "my-feature"`
|
|
37
|
+
**Then** the system spec gate passes
|
|
38
|
+
**And** the pipeline proceeds to feature spec creation (interactive or autonomous)
|
|
39
|
+
|
|
40
|
+
### AC-5: System Spec Before Feature Spec
|
|
41
|
+
|
|
42
|
+
**Given** a user invokes `/implement-feature "my-feature" --interactive`
|
|
43
|
+
**And** SYSTEM_SPEC.md does not exist
|
|
44
|
+
**When** the pipeline routing logic runs
|
|
45
|
+
**Then** system spec interactive session runs first
|
|
46
|
+
**And** only after system spec is complete does feature spec interactive session begin
|
|
47
|
+
|
|
48
|
+
## Out of Scope
|
|
49
|
+
|
|
50
|
+
- Updating existing SYSTEM_SPEC.md interactively (only creation)
|
|
51
|
+
- Skipping system spec gate entirely
|
|
52
|
+
- System spec versioning or change tracking
|
|
53
|
+
|
|
54
|
+
## References
|
|
55
|
+
|
|
56
|
+
- Feature Spec: `.blueprint/features/feature_interactive-alex/FEATURE_SPEC.md` (Section 4.1, Open Question 2)
|
|
57
|
+
- System Spec: `.blueprint/system_specification/SYSTEM_SPEC.md` (Section 7 - System spec gate)
|
|
@@ -11,7 +11,7 @@ Implement the feature according to the plan. Work incrementally, making tests pa
|
|
|
11
11
|
|
|
12
12
|
## Process (INCREMENTAL - one file at a time)
|
|
13
13
|
|
|
14
|
-
1. Run tests
|
|
14
|
+
1. Run tests using the project's test command (see `.claude/stack-config.json`)
|
|
15
15
|
2. For each failing test group:
|
|
16
16
|
a. Identify the minimal code needed
|
|
17
17
|
b. Write or edit ONE file
|
|
@@ -17,7 +17,7 @@ Step 1: Write {TEST_DIR}/test-spec.md containing:
|
|
|
17
17
|
- Key assumptions (bullet list)
|
|
18
18
|
|
|
19
19
|
Step 2: Write {TEST_FILE} containing:
|
|
20
|
-
- Executable tests
|
|
20
|
+
- Executable tests using the project's test runner (see `.claude/stack-config.json`)
|
|
21
21
|
- One describe block per story
|
|
22
22
|
- One test per acceptance criterion
|
|
23
23
|
|
|
@@ -41,7 +41,7 @@ Before writing tests:
|
|
|
41
41
|
[ ] Ambiguities identified
|
|
42
42
|
[ ] Assumptions written down
|
|
43
43
|
|
|
44
|
-
Before handover to
|
|
44
|
+
Before handover to the human to pass to Claude:
|
|
45
45
|
[ ] Understanding summary written
|
|
46
46
|
[ ] Test plan created
|
|
47
47
|
[ ] Happy path tests written
|
|
@@ -50,7 +50,7 @@ Before handover to Steve to pass to Claude:
|
|
|
50
50
|
[ ] Traceability table complete
|
|
51
51
|
[ ] Open questions listed
|
|
52
52
|
|
|
53
|
-
If any box is unchecked → raise it with
|
|
53
|
+
If any box is unchecked → raise it with the human that its not ready to hand over. If all boxes are checked, let the human know that its ready to handover to Claude.
|
|
54
54
|
|
|
55
55
|
🧑💻 Developer CLI Ritual (Claude)
|
|
56
56
|
Before coding:
|
|
@@ -64,7 +64,7 @@ During coding:
|
|
|
64
64
|
[ ] Ran relevant tests after each change
|
|
65
65
|
[ ] Did not weaken or delete tests
|
|
66
66
|
|
|
67
|
-
Before handover to
|
|
67
|
+
Before handover to the human:
|
|
68
68
|
[ ] All tests passing
|
|
69
69
|
[ ] Lint passing
|
|
70
70
|
[ ] No unexplained skip/todo
|
|
@@ -139,4 +139,4 @@ Outcome:
|
|
|
139
139
|
❗ Green builds are necessary, not sufficient
|
|
140
140
|
❗ Assumptions must be written down
|
|
141
141
|
❗ No silent changes
|
|
142
|
-
❗ When in doubt, slow down and ask
|
|
142
|
+
❗ When in doubt, slow down and ask the human
|
package/README.md
CHANGED
|
@@ -19,6 +19,32 @@ npx orchestr8 init
|
|
|
19
19
|
|
|
20
20
|
This installs the `.blueprint/` directory, `.business_context/`, and the `/implement-feature` skill to `.claude/commands/`. If files already exist, you'll be prompted before overwriting. It also adds the workflow queue to `.gitignore`.
|
|
21
21
|
|
|
22
|
+
During initialization, orchestr8 **auto-detects your project's tech stack** from manifest files (`package.json`, `pyproject.toml`, `go.mod`, etc.) and writes the result to `.claude/stack-config.json`. The agents (Nigel and Codey) read this file at runtime to adapt their testing and implementation approach to your stack.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Review what was detected
|
|
26
|
+
npx orchestr8 stack-config
|
|
27
|
+
|
|
28
|
+
# Adjust if needed
|
|
29
|
+
npx orchestr8 stack-config set language TypeScript
|
|
30
|
+
npx orchestr8 stack-config set frameworks '["next","react"]'
|
|
31
|
+
npx orchestr8 stack-config set testRunner vitest
|
|
32
|
+
npx orchestr8 stack-config set testCommand "npx vitest run"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If you're working with a non-JavaScript project, set the stack config before running the pipeline:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Python/Django example
|
|
39
|
+
npx orchestr8 stack-config set language Python
|
|
40
|
+
npx orchestr8 stack-config set runtime "Python 3.12"
|
|
41
|
+
npx orchestr8 stack-config set packageManager pip
|
|
42
|
+
npx orchestr8 stack-config set frameworks '["django"]'
|
|
43
|
+
npx orchestr8 stack-config set testRunner pytest
|
|
44
|
+
npx orchestr8 stack-config set testCommand "pytest"
|
|
45
|
+
npx orchestr8 stack-config set linter ruff
|
|
46
|
+
```
|
|
47
|
+
|
|
22
48
|
## Keeping Up to Date
|
|
23
49
|
|
|
24
50
|
**Modules** (history, insights, feedback, retry, validate) are part of the npm package and update automatically when you use `npx` - no action needed.
|
|
@@ -70,6 +96,9 @@ This updates `.blueprint/agents/`, `.blueprint/templates/`, `.blueprint/ways_of_
|
|
|
70
96
|
|
|
71
97
|
| Command | Description |
|
|
72
98
|
|---------|-------------|
|
|
99
|
+
| `npx orchestr8 stack-config` | View detected tech stack |
|
|
100
|
+
| `npx orchestr8 stack-config set <key> <value>` | Modify stack settings (language, frameworks, testRunner, etc.) |
|
|
101
|
+
| `npx orchestr8 stack-config reset` | Reset to empty defaults |
|
|
73
102
|
| `npx orchestr8 retry-config` | View retry configuration |
|
|
74
103
|
| `npx orchestr8 retry-config set <key> <value>` | Modify retry settings |
|
|
75
104
|
| `npx orchestr8 retry-config reset` | Reset to defaults |
|
|
@@ -197,6 +226,7 @@ orchestr8 includes these built-in modules for observability and self-improvement
|
|
|
197
226
|
| **business-context** | Lazy loading of business context based on feature needs |
|
|
198
227
|
| **tools** | Tool schemas and validation for Claude native features |
|
|
199
228
|
| **parallel** | Parallel pipeline execution using git worktrees |
|
|
229
|
+
| **stack** | Configurable tech stack detection and configuration |
|
|
200
230
|
|
|
201
231
|
### How They Work Together
|
|
202
232
|
|
|
@@ -260,6 +290,7 @@ your-project/
|
|
|
260
290
|
│ ├── feedback-config.json # Feedback thresholds (gitignored)
|
|
261
291
|
│ ├── parallel-config.json # Parallel execution config (gitignored)
|
|
262
292
|
│ ├── parallel-queue.json # Parallel pipeline state (gitignored)
|
|
293
|
+
│ ├── stack-config.json # Tech stack configuration (gitignored)
|
|
263
294
|
│ └── implement-queue.json # Pipeline queue state (gitignored)
|
|
264
295
|
└── test/
|
|
265
296
|
├── artifacts/ # Test specs per feature
|
package/SKILL.md
CHANGED
|
@@ -28,8 +28,9 @@ description: Run the Alex → Cass → Nigel → Codey pipeline using Task tool
|
|
|
28
28
|
## Invocation
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
/implement-feature # Interactive
|
|
31
|
+
/implement-feature # Interactive slug prompt
|
|
32
32
|
/implement-feature "user-auth" # New feature
|
|
33
|
+
/implement-feature "user-auth" --interactive # Force interactive spec creation
|
|
33
34
|
/implement-feature "user-auth" --pause-after=alex|cass|nigel|codey-plan
|
|
34
35
|
/implement-feature "user-auth" --no-commit
|
|
35
36
|
/implement-feature "user-auth" --no-feedback # Skip feedback collection
|
|
@@ -113,6 +114,39 @@ If not provided: Ask user, convert to slug format (lowercase, hyphens), confirm.
|
|
|
113
114
|
### Step 3: System Spec Gate
|
|
114
115
|
Check `{SYS_SPEC}` exists. If not: run Alex to create it, then **stop for review**.
|
|
115
116
|
|
|
117
|
+
### Step 3a: Interactive Mode Detection
|
|
118
|
+
|
|
119
|
+
**Module:** `src/interactive.js`
|
|
120
|
+
|
|
121
|
+
The pipeline automatically enters interactive mode when:
|
|
122
|
+
1. `--interactive` flag is explicitly passed
|
|
123
|
+
2. System spec (`{SYS_SPEC}`) is missing - creates system spec interactively
|
|
124
|
+
3. Feature spec (`{FEAT_SPEC}`) is missing - creates feature spec interactively
|
|
125
|
+
|
|
126
|
+
**Interactive Session Flow:**
|
|
127
|
+
```
|
|
128
|
+
idle → gathering → questioning → drafting → finalizing
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Available Commands During Session:**
|
|
132
|
+
| Command | Action |
|
|
133
|
+
|---------|--------|
|
|
134
|
+
| `/approve` or `yes` | Mark section complete, proceed to next |
|
|
135
|
+
| `/change <feedback>` | Revise current section with feedback |
|
|
136
|
+
| `/skip` | Mark section TBD, proceed to next |
|
|
137
|
+
| `/restart` | Discard draft, restart current section |
|
|
138
|
+
| `/abort` | Exit without writing spec |
|
|
139
|
+
| `/done` | Finalize spec (if min sections complete) |
|
|
140
|
+
|
|
141
|
+
**Minimum Required Sections:**
|
|
142
|
+
- Feature spec: Intent, Scope, Actors
|
|
143
|
+
- System spec: Purpose, Actors, Boundaries
|
|
144
|
+
|
|
145
|
+
**On Interactive Completion:**
|
|
146
|
+
- Writes spec to appropriate path
|
|
147
|
+
- Generates `handoff-alex.md` with session metrics
|
|
148
|
+
- Records `mode: "interactive"` in history entry
|
|
149
|
+
|
|
116
150
|
### Step 3.5: Insights Preview (NEW)
|
|
117
151
|
|
|
118
152
|
**Module:** `src/insights.js`
|
package/bin/cli.js
CHANGED
|
@@ -12,6 +12,11 @@ const {
|
|
|
12
12
|
setConfigValue: setFeedbackConfigValue,
|
|
13
13
|
resetConfig: resetFeedbackConfig
|
|
14
14
|
} = require('../src/feedback');
|
|
15
|
+
const {
|
|
16
|
+
displayStackConfig,
|
|
17
|
+
setStackConfigValue,
|
|
18
|
+
resetStackConfig
|
|
19
|
+
} = require('../src/stack');
|
|
15
20
|
const { displayFeedbackInsights } = require('../src/insights');
|
|
16
21
|
const {
|
|
17
22
|
formatStatus,
|
|
@@ -145,6 +150,26 @@ const commands = {
|
|
|
145
150
|
},
|
|
146
151
|
description: 'Manage feedback loop configuration'
|
|
147
152
|
},
|
|
153
|
+
'stack-config': {
|
|
154
|
+
fn: () => {
|
|
155
|
+
if (subArg === 'set') {
|
|
156
|
+
const key = args[2];
|
|
157
|
+
const value = args[3];
|
|
158
|
+
if (!key || !value) {
|
|
159
|
+
console.error('Usage: stack-config set <key> <value>');
|
|
160
|
+
console.error('Valid keys: language, runtime, packageManager, frameworks, testRunner, testCommand, linter, tools');
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
setStackConfigValue(key, value);
|
|
164
|
+
} else if (subArg === 'reset') {
|
|
165
|
+
resetStackConfig();
|
|
166
|
+
console.log('Stack configuration reset to defaults.');
|
|
167
|
+
} else {
|
|
168
|
+
displayStackConfig();
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
description: 'View or modify project tech stack configuration'
|
|
172
|
+
},
|
|
148
173
|
'parallel-config': {
|
|
149
174
|
fn: () => {
|
|
150
175
|
if (subArg === 'set') {
|
|
@@ -307,6 +332,9 @@ Commands:
|
|
|
307
332
|
feedback-config View current feedback loop configuration
|
|
308
333
|
feedback-config set <key> <value> Modify a config value (minRatingThreshold, enabled)
|
|
309
334
|
feedback-config reset Reset feedback configuration to defaults
|
|
335
|
+
stack-config View current tech stack configuration
|
|
336
|
+
stack-config set <key> <value> Modify a config value (language, runtime, frameworks, etc.)
|
|
337
|
+
stack-config reset Reset tech stack configuration to defaults
|
|
310
338
|
parallel <slugs...> Run multiple feature pipelines in parallel
|
|
311
339
|
parallel <slugs...> --dry-run Show execution plan without running
|
|
312
340
|
parallel <slugs...> --yes Skip confirmation prompt
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchestr8",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Multi-agent workflow framework for automated feature development",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"author": "NewmanJustice",
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
|
-
"url": "git+https://github.com/NewmanJustice/
|
|
23
|
+
"url": "git+https://github.com/NewmanJustice/agent-workflow.git"
|
|
24
24
|
},
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"engines": {
|