@arsxxi/iterative-dev-workflow 1.0.1 → 1.0.2
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/.opencode/commands/kickoff.md +90 -90
- package/.opencode/commands/phase-1.md +47 -43
- package/.opencode/commands/phase-2-step-1.md +39 -37
- package/.opencode/commands/phase-2-step-2.md +39 -39
- package/.opencode/commands/phase-2-step-3.md +80 -80
- package/.opencode/commands/phase-2-step-4.md +67 -67
- package/.opencode/commands/phase-2-step-5.md +34 -34
- package/.opencode/commands/phase-3.md +45 -45
- package/.opencode/commands/phase-4.md +41 -41
- package/.opencode/commands/session-transcript.md +69 -71
- package/.opencode/plugins/iterative-dev-workflow.mjs +4 -1
- package/AGENTS.md +47 -28
- package/README.md +24 -7
- package/bin/install-opencode-commands.mjs +49 -0
- package/commands/kickoff.md +90 -90
- package/commands/kickoff.toml +2 -2
- package/commands/phase-1.md +47 -43
- package/commands/phase-2-step-1.md +39 -37
- package/commands/phase-2-step-2.md +39 -39
- package/commands/phase-2-step-3.md +80 -80
- package/commands/phase-2-step-4.md +67 -67
- package/commands/phase-2-step-5.md +34 -34
- package/commands/phase-3.md +45 -45
- package/commands/phase-4.md +41 -41
- package/commands/session-transcript.md +69 -71
- package/commands/session-transcript.toml +2 -2
- package/package.json +9 -2
- package/skills/workflow-methodology/SKILL.md +562 -564
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Phase 2 Step 4: High-Fidelity Design"
|
|
3
|
-
argument-hint: [project name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Step 0 — find which project this is for
|
|
7
|
-
|
|
8
|
-
Before anything else, figure out which project this command applies to:
|
|
9
|
-
|
|
10
|
-
1. If you were given a project name after the slash (e.g. `/phase-2-step-4 my-project`), use it.
|
|
11
|
-
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
-
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
-
`my-project`"), so it's never a silent guess.
|
|
14
|
-
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
-
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
-
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
-
|
|
18
|
-
# Phase 2 Step 4: High-Fidelity Design
|
|
19
|
-
|
|
20
|
-
## Purpose
|
|
21
|
-
Create High-Level Visualizations for the Component Architecture of the chosen design, using Mermaid.js syntax.
|
|
22
|
-
|
|
23
|
-
## Steps
|
|
24
|
-
|
|
25
|
-
1. **Check for the previous result** from Step 3 (Quality Attribute). If it's empty or not generated, DO NOT PROCEED TO EXECUTE THIS STEP — remind the user.
|
|
26
|
-
|
|
27
|
-
2. **Remind the user to double-check Step 3's result before proceeding.** Present this to the user:
|
|
28
|
-
|
|
29
|
-
> Step 3 gave you the chosen design according to the Quality Attributes you designed
|
|
30
|
-
> previously. Make sure to double-check the results from Step 3 and do your own assessment of
|
|
31
|
-
> the results given by the AI agent in Step 3. Make sure you select the correct design, not
|
|
32
|
-
> just bias from the AI's results.
|
|
33
|
-
|
|
34
|
-
3. **Ask the user to explain their chosen design.** Present this to the user:
|
|
35
|
-
|
|
36
|
-
> Briefly explain the design you've selected from the previous phase, and explain from your
|
|
37
|
-
> opinion why you selected that design. Or if you have your own thoughts/modification, let the
|
|
38
|
-
> AI agent know here.
|
|
39
|
-
|
|
40
|
-
Then stop and wait for the user's explanation. Do not proceed to the analysis/diagram below
|
|
41
|
-
until they've explained their chosen design.
|
|
42
|
-
|
|
43
|
-
4. **Analyze the chosen design.** Once the user has explained their chosen design, do a deep
|
|
44
|
-
dive and meticulous analysis on that chosen design.
|
|
45
|
-
|
|
46
|
-
5. **Create the System Context Diagram.** Using Mermaid.js syntax, create a System Context
|
|
47
|
-
Diagram that defines the boundaries of the current solution (feature, system, etc.) we are
|
|
48
|
-
working on, and shows how the design sits within the whole app.
|
|
49
|
-
|
|
50
|
-
Once this diagram is done, stop. The User Journey diagram is a separate step -
|
|
51
|
-
`/phase-2-step-5` - run after you've reviewed this one.
|
|
52
|
-
|
|
53
|
-
## Hard constraints
|
|
54
|
-
|
|
55
|
-
- AVOID overengineering in the architecture itself — the diagrams should reflect a simple,
|
|
56
|
-
maintainable structure.
|
|
57
|
-
- Name every box/component in the diagrams using plain-language intent, not jargon.
|
|
58
|
-
|
|
59
|
-
## Output
|
|
60
|
-
- The user's explanation of their chosen design (and any modifications)
|
|
61
|
-
- Analysis of the chosen design
|
|
62
|
-
- System Context Diagram (Mermaid.js)
|
|
63
|
-
|
|
64
|
-
## Trigger
|
|
65
|
-
```
|
|
66
|
-
$ARGUMENTS = "project name"
|
|
67
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: "Phase 2 Step 4: High-Fidelity Design"
|
|
3
|
+
argument-hint: [project name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Step 0 — find which project this is for
|
|
7
|
+
|
|
8
|
+
Before anything else, figure out which project this command applies to:
|
|
9
|
+
|
|
10
|
+
1. If you were given a project name after the slash (e.g. `/phase-2-step-4 my-project`), use it.
|
|
11
|
+
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
+
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
+
`my-project`"), so it's never a silent guess.
|
|
14
|
+
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
+
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
+
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
+
|
|
18
|
+
# Phase 2 Step 4: High-Fidelity Design
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
Create High-Level Visualizations for the Component Architecture of the chosen design, using Mermaid.js syntax.
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
1. **Check for the previous result** from Step 3 (Quality Attribute). If it's empty or not generated, DO NOT PROCEED TO EXECUTE THIS STEP — remind the user.
|
|
26
|
+
|
|
27
|
+
2. **Remind the user to double-check Step 3's result before proceeding.** Present this to the user:
|
|
28
|
+
|
|
29
|
+
> Step 3 gave you the chosen design according to the Quality Attributes you designed
|
|
30
|
+
> previously. Make sure to double-check the results from Step 3 and do your own assessment of
|
|
31
|
+
> the results given by the AI agent in Step 3. Make sure you select the correct design, not
|
|
32
|
+
> just bias from the AI's results.
|
|
33
|
+
|
|
34
|
+
3. **Ask the user to explain their chosen design.** Present this to the user:
|
|
35
|
+
|
|
36
|
+
> Briefly explain the design you've selected from the previous phase, and explain from your
|
|
37
|
+
> opinion why you selected that design. Or if you have your own thoughts/modification, let the
|
|
38
|
+
> AI agent know here.
|
|
39
|
+
|
|
40
|
+
Then stop and wait for the user's explanation. Do not proceed to the analysis/diagram below
|
|
41
|
+
until they've explained their chosen design.
|
|
42
|
+
|
|
43
|
+
4. **Analyze the chosen design.** Once the user has explained their chosen design, do a deep
|
|
44
|
+
dive and meticulous analysis on that chosen design.
|
|
45
|
+
|
|
46
|
+
5. **Create the System Context Diagram.** Using Mermaid.js syntax, create a System Context
|
|
47
|
+
Diagram that defines the boundaries of the current solution (feature, system, etc.) we are
|
|
48
|
+
working on, and shows how the design sits within the whole app.
|
|
49
|
+
|
|
50
|
+
Once this diagram is done, stop. The User Journey diagram is a separate step -
|
|
51
|
+
`/phase-2-step-5` - run after you've reviewed this one.
|
|
52
|
+
|
|
53
|
+
## Hard constraints
|
|
54
|
+
|
|
55
|
+
- AVOID overengineering in the architecture itself — the diagrams should reflect a simple,
|
|
56
|
+
maintainable structure.
|
|
57
|
+
- Name every box/component in the diagrams using plain-language intent, not jargon.
|
|
58
|
+
|
|
59
|
+
## Output
|
|
60
|
+
- The user's explanation of their chosen design (and any modifications)
|
|
61
|
+
- Analysis of the chosen design
|
|
62
|
+
- System Context Diagram (Mermaid.js)
|
|
63
|
+
|
|
64
|
+
## Trigger
|
|
65
|
+
```
|
|
66
|
+
$ARGUMENTS = "project name"
|
|
67
|
+
```
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Phase 2 Step 5: User Journey"
|
|
3
|
-
argument-hint: [project name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Step 0 — find which project this is for
|
|
7
|
-
|
|
8
|
-
Before anything else, figure out which project this command applies to:
|
|
9
|
-
|
|
10
|
-
1. If you were given a project name after the slash (e.g. `/phase-2-step-5 my-project`), use it.
|
|
11
|
-
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
-
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
-
`my-project`"), so it's never a silent guess.
|
|
14
|
-
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
-
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
-
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
-
|
|
18
|
-
# Phase 2 Step 5: User Journey
|
|
19
|
-
|
|
20
|
-
## Purpose
|
|
21
|
-
Create a User Journey Diagram using Mermaid.js syntax for the chosen design from Step 4 (High-Fidelity Design).
|
|
22
|
-
|
|
23
|
-
## Steps
|
|
24
|
-
|
|
25
|
-
1. **Check for the previous result** from Step 4 (High-Fidelity Design). If it's empty or not generated, DO NOT PROCEED — remind the user.
|
|
26
|
-
2. **Create the User Journey Diagram** using Mermaid.js syntax, mapping the user's interaction flow through the system.
|
|
27
|
-
|
|
28
|
-
## Output
|
|
29
|
-
- User Journey Diagram (Mermaid.js)
|
|
30
|
-
|
|
31
|
-
## Trigger
|
|
32
|
-
```
|
|
33
|
-
$ARGUMENTS = "project name"
|
|
34
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: "Phase 2 Step 5: User Journey"
|
|
3
|
+
argument-hint: [project name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Step 0 — find which project this is for
|
|
7
|
+
|
|
8
|
+
Before anything else, figure out which project this command applies to:
|
|
9
|
+
|
|
10
|
+
1. If you were given a project name after the slash (e.g. `/phase-2-step-5 my-project`), use it.
|
|
11
|
+
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
+
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
+
`my-project`"), so it's never a silent guess.
|
|
14
|
+
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
+
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
+
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
+
|
|
18
|
+
# Phase 2 Step 5: User Journey
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
Create a User Journey Diagram using Mermaid.js syntax for the chosen design from Step 4 (High-Fidelity Design).
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
1. **Check for the previous result** from Step 4 (High-Fidelity Design). If it's empty or not generated, DO NOT PROCEED — remind the user.
|
|
26
|
+
2. **Create the User Journey Diagram** using Mermaid.js syntax, mapping the user's interaction flow through the system.
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
- User Journey Diagram (Mermaid.js)
|
|
30
|
+
|
|
31
|
+
## Trigger
|
|
32
|
+
```
|
|
33
|
+
$ARGUMENTS = "project name"
|
|
34
|
+
```
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Phase 3: Implementation Plan"
|
|
3
|
-
argument-hint: [project name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Step 0 — find which project this is for
|
|
7
|
-
|
|
8
|
-
Before anything else, figure out which project this command applies to:
|
|
9
|
-
|
|
10
|
-
1. If you were given a project name after the slash (e.g. `/phase-3 my-project`), use it.
|
|
11
|
-
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
-
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
-
`my-project`"), so it's never a silent guess.
|
|
14
|
-
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
-
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
-
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
-
|
|
18
|
-
# Phase 3: Implementation Plan
|
|
19
|
-
|
|
20
|
-
## Purpose
|
|
21
|
-
Write a comprehensive implementation plan based on the proposed plan and extensive architecture and design from Phase 1 and Phase 2.
|
|
22
|
-
|
|
23
|
-
## Steps
|
|
24
|
-
|
|
25
|
-
1. **Check for the previous result** from the previous step. If it's empty or not generated due to certain reason, then DO NOT PROCEED TO EXECUTE THIS STEP. Don't forget to remind the user if this happened.
|
|
26
|
-
2. **Write a comprehensive implementation plan** based on the proposed plan (Phase 1: Analyze) and extensive architecture and design (Phase 2: Design - the chosen design, ATAM trade-offs, Quality Attribute results, System Context Diagram, and User Journey Diagram).
|
|
27
|
-
|
|
28
|
-
## Constraints
|
|
29
|
-
|
|
30
|
-
AVOID overengineering, PREFER simple, low-complexity implementations with the GOAL of high maintainability, AVOID jargons when naming function/methods/class/components/system, instead PRIORITIZE using layman's terms or prefer naming with the actual intentions of the code, the GOAL is ease of developer understanding and maintainability.
|
|
31
|
-
|
|
32
|
-
## Iteration rule
|
|
33
|
-
|
|
34
|
-
If, while writing the implementation plan, you find a problem that is actually a Design problem
|
|
35
|
-
(not an implementation detail) - e.g. the architecture from Phase 2 doesn't actually support
|
|
36
|
-
something needed - STOP and tell the user clearly, and recommend circling back to Phase 2. Do
|
|
37
|
-
not silently work around a design flaw in the plan.
|
|
38
|
-
|
|
39
|
-
## Output
|
|
40
|
-
- A comprehensive implementation plan, written to `.workflow/<slug>/03-implement.md`
|
|
41
|
-
|
|
42
|
-
## Trigger
|
|
43
|
-
```
|
|
44
|
-
$ARGUMENTS = "project name"
|
|
45
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: "Phase 3: Implementation Plan"
|
|
3
|
+
argument-hint: [project name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Step 0 — find which project this is for
|
|
7
|
+
|
|
8
|
+
Before anything else, figure out which project this command applies to:
|
|
9
|
+
|
|
10
|
+
1. If you were given a project name after the slash (e.g. `/phase-3 my-project`), use it.
|
|
11
|
+
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
+
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
+
`my-project`"), so it's never a silent guess.
|
|
14
|
+
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
+
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
+
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
+
|
|
18
|
+
# Phase 3: Implementation Plan
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
Write a comprehensive implementation plan based on the proposed plan and extensive architecture and design from Phase 1 and Phase 2.
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
1. **Check for the previous result** from the previous step. If it's empty or not generated due to certain reason, then DO NOT PROCEED TO EXECUTE THIS STEP. Don't forget to remind the user if this happened.
|
|
26
|
+
2. **Write a comprehensive implementation plan** based on the proposed plan (Phase 1: Analyze) and extensive architecture and design (Phase 2: Design - the chosen design, ATAM trade-offs, Quality Attribute results, System Context Diagram, and User Journey Diagram).
|
|
27
|
+
|
|
28
|
+
## Constraints
|
|
29
|
+
|
|
30
|
+
AVOID overengineering, PREFER simple, low-complexity implementations with the GOAL of high maintainability, AVOID jargons when naming function/methods/class/components/system, instead PRIORITIZE using layman's terms or prefer naming with the actual intentions of the code, the GOAL is ease of developer understanding and maintainability.
|
|
31
|
+
|
|
32
|
+
## Iteration rule
|
|
33
|
+
|
|
34
|
+
If, while writing the implementation plan, you find a problem that is actually a Design problem
|
|
35
|
+
(not an implementation detail) - e.g. the architecture from Phase 2 doesn't actually support
|
|
36
|
+
something needed - STOP and tell the user clearly, and recommend circling back to Phase 2. Do
|
|
37
|
+
not silently work around a design flaw in the plan.
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
- A comprehensive implementation plan, written to `.workflow/<slug>/03-implement.md`
|
|
41
|
+
|
|
42
|
+
## Trigger
|
|
43
|
+
```
|
|
44
|
+
$ARGUMENTS = "project name"
|
|
45
|
+
```
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Phase 4: Postmortem"
|
|
3
|
-
argument-hint: [project name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Step 0 — find which project this is for
|
|
7
|
-
|
|
8
|
-
Before anything else, figure out which project this command applies to:
|
|
9
|
-
|
|
10
|
-
1. If you were given a project name after the slash (e.g. `/phase-4 my-project`), use it.
|
|
11
|
-
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
-
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
-
`my-project`"), so it's never a silent guess.
|
|
14
|
-
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
-
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
-
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
-
|
|
18
|
-
# Phase 4: Postmortem
|
|
19
|
-
|
|
20
|
-
## Purpose
|
|
21
|
-
Reflect on the iteration to improve the next one.
|
|
22
|
-
|
|
23
|
-
## Prerequisites
|
|
24
|
-
- Phase 3 (Implement) is complete
|
|
25
|
-
|
|
26
|
-
## Steps
|
|
27
|
-
|
|
28
|
-
1. **What went well?** — capture successful patterns
|
|
29
|
-
2. **What could be better?** — identify friction and slowdowns
|
|
30
|
-
3. **What will we do differently?** — concrete improvements for next iteration
|
|
31
|
-
4. **Update workflow** — if a process change is needed, update the relevant command files
|
|
32
|
-
|
|
33
|
-
## Output
|
|
34
|
-
- Postmortem document
|
|
35
|
-
- Action items for next iteration
|
|
36
|
-
- Updated workflow documentation (if needed)
|
|
37
|
-
|
|
38
|
-
## Trigger
|
|
39
|
-
```
|
|
40
|
-
$ARGUMENTS = "project name"
|
|
41
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: "Phase 4: Postmortem"
|
|
3
|
+
argument-hint: [project name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Step 0 — find which project this is for
|
|
7
|
+
|
|
8
|
+
Before anything else, figure out which project this command applies to:
|
|
9
|
+
|
|
10
|
+
1. If you were given a project name after the slash (e.g. `/phase-4 my-project`), use it.
|
|
11
|
+
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
+
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
+
`my-project`"), so it's never a silent guess.
|
|
14
|
+
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
+
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
+
- No folders → stop and tell the user to run `/kickoff` first. Don't proceed.
|
|
17
|
+
|
|
18
|
+
# Phase 4: Postmortem
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
Reflect on the iteration to improve the next one.
|
|
22
|
+
|
|
23
|
+
## Prerequisites
|
|
24
|
+
- Phase 3 (Implement) is complete
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
1. **What went well?** — capture successful patterns
|
|
29
|
+
2. **What could be better?** — identify friction and slowdowns
|
|
30
|
+
3. **What will we do differently?** — concrete improvements for next iteration
|
|
31
|
+
4. **Update workflow** — if a process change is needed, update the relevant command files
|
|
32
|
+
|
|
33
|
+
## Output
|
|
34
|
+
- Postmortem document
|
|
35
|
+
- Action items for next iteration
|
|
36
|
+
- Updated workflow documentation (if needed)
|
|
37
|
+
|
|
38
|
+
## Trigger
|
|
39
|
+
```
|
|
40
|
+
$ARGUMENTS = "project name"
|
|
41
|
+
```
|
|
@@ -1,71 +1,69 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Session Transcript"
|
|
3
|
-
argument-hint: [optional: project name]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Step 0 — find which project this is for
|
|
7
|
-
|
|
8
|
-
Before anything else, figure out which project this command applies to:
|
|
9
|
-
|
|
10
|
-
1. If you were given a project name after the slash (e.g. `/session-transcript my-project`), use it.
|
|
11
|
-
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
-
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
-
`my-project`"), so it's never a silent guess.
|
|
14
|
-
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
-
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
-
- No folders → fall back to the project root directory name as the project name (this is the
|
|
17
|
-
one case where no project is in progress yet — a transcript may legitimately exist outside
|
|
18
|
-
of `.workflow/`).
|
|
19
|
-
|
|
20
|
-
# Session Transcript
|
|
21
|
-
|
|
22
|
-
## Purpose
|
|
23
|
-
Record this session's conversation as-is, in chronological order (who said what), as a standalone factual record — separate from the workflow's phase deliverables (which only contain final results, not the discussion that led to them).
|
|
24
|
-
|
|
25
|
-
## Steps
|
|
26
|
-
|
|
27
|
-
1. **Scan the project root.** Do NOT create any new folders. Determine the project root directory (where `.git/` or `package.json` or similar marker exists). Save the transcript directly in the project root.
|
|
28
|
-
|
|
29
|
-
2. **
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
$ARGUMENTS = "optional: project name"
|
|
71
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: "Session Transcript"
|
|
3
|
+
argument-hint: [optional: project name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Step 0 — find which project this is for
|
|
7
|
+
|
|
8
|
+
Before anything else, figure out which project this command applies to:
|
|
9
|
+
|
|
10
|
+
1. If you were given a project name after the slash (e.g. `/session-transcript my-project`), use it.
|
|
11
|
+
2. Otherwise, look at the subfolders under `.workflow/`:
|
|
12
|
+
- Exactly one folder → use it. Tell the user which project you picked (e.g. "Working on
|
|
13
|
+
`my-project`"), so it's never a silent guess.
|
|
14
|
+
- Two or more folders → ask the user once which project this is for. To make the question
|
|
15
|
+
useful, show the first line of each project's `00-context.md`, not just the folder name.
|
|
16
|
+
- No folders → fall back to the project root directory name as the project name (this is the
|
|
17
|
+
one case where no project is in progress yet — a transcript may legitimately exist outside
|
|
18
|
+
of `.workflow/`).
|
|
19
|
+
|
|
20
|
+
# Session Transcript
|
|
21
|
+
|
|
22
|
+
## Purpose
|
|
23
|
+
Record this session's conversation as-is, in chronological order (who said what), as a standalone factual record — separate from the workflow's phase deliverables (which only contain final results, not the discussion that led to them).
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
1. **Scan the project root.** Do NOT create any new folders. Determine the project root directory (where `.git/` or `package.json` or similar marker exists). Save the transcript directly in the project root.
|
|
28
|
+
|
|
29
|
+
2. **Reconstruct this session's conversation in chronological order**, turn by turn, labeled by
|
|
30
|
+
who said it (`User` / `Agent`). Use the actual wording from the conversation - do not
|
|
31
|
+
summarize, paraphrase, condense, or skip turns.
|
|
32
|
+
|
|
33
|
+
3. **Be honest about context limits.** You can only transcribe what's actually present in your
|
|
34
|
+
current context window for this session. If earlier turns were compacted, truncated, or are
|
|
35
|
+
otherwise not available to you, say so explicitly at the top of the file (e.g. "Transcript
|
|
36
|
+
starts partway through the session - earlier turns were not available in context") instead of
|
|
37
|
+
inventing or guessing what was said.
|
|
38
|
+
|
|
39
|
+
4. **Check for an existing transcript file.** If `aichat-<slug>.md` already exists from a
|
|
40
|
+
previous run, do not overwrite it - append this session's transcript below the existing
|
|
41
|
+
content, under a new dated section, so multiple sessions accumulate in one file.
|
|
42
|
+
|
|
43
|
+
## Output format
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
# Session Transcript
|
|
47
|
+
|
|
48
|
+
## Project: <project-name>
|
|
49
|
+
|
|
50
|
+
## Session: <date/time if known, otherwise "session N">
|
|
51
|
+
|
|
52
|
+
### User
|
|
53
|
+
<verbatim text of the turn>
|
|
54
|
+
|
|
55
|
+
### Agent
|
|
56
|
+
<verbatim text of the turn>
|
|
57
|
+
|
|
58
|
+
### User
|
|
59
|
+
<verbatim text of the turn>
|
|
60
|
+
|
|
61
|
+
...
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Write the result to `aichat-<slug>.md` in the project root. If no project name was provided, use `aichat.md`.
|
|
65
|
+
|
|
66
|
+
## Trigger
|
|
67
|
+
```
|
|
68
|
+
$ARGUMENTS = "optional: project name"
|
|
69
|
+
```
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// iterative-dev-workflow — OpenCode plugin.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Injects AGENTS.md into the system prompt on every chat turn. Also attempts to register
|
|
4
|
+
// commands via the config hook as a bonus - but this is NOT the primary way commands get
|
|
5
|
+
// installed (that's the postinstall script, see bin/install-opencode-commands.mjs), since
|
|
6
|
+
// this hook's behavior isn't guaranteed to be honored across all OpenCode versions.
|
|
4
7
|
|
|
5
8
|
import fs from 'fs';
|
|
6
9
|
import path from 'path';
|
package/AGENTS.md
CHANGED
|
@@ -1,48 +1,67 @@
|
|
|
1
1
|
# AGENTS.md — Iterative Dev Workflow Plugin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## What this repo is
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A structured 4-phase iterative development workflow plugin for AI coding agents (Claude Code, OpenCode, Antigravity/Codex, Gemini).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **System prompt**: this file (`AGENTS.md`) is injected into the agent's system prompt by the plugin (`iterative-dev-workflow.mjs`). **Hand-curated, not generated** — see Development below.
|
|
9
|
-
- **Plugin entrypoint**: `.opencode/plugins/iterative-dev-workflow.mjs` — dynamically loads command templates from `commands/` and injects `AGENTS.md` on startup.
|
|
7
|
+
## Source of truth
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
After editing `commands/*.md` or `skills/workflow-methodology/SKILL.md`, run:
|
|
9
|
+
`commands/*.md` (10 command files) and `skills/workflow-methodology/SKILL.md` are the authoritative sources. All other platform-specific files are generated from these.
|
|
14
10
|
|
|
11
|
+
**After editing `commands/` or `skills/`, run:**
|
|
15
12
|
```bash
|
|
16
13
|
bash scripts/sync-platforms.sh
|
|
17
14
|
```
|
|
18
15
|
|
|
19
16
|
This syncs to:
|
|
20
|
-
- `.opencode/commands/` — OpenCode
|
|
21
|
-
- `.agent/workflows/` — Antigravity
|
|
22
|
-
- `.agents/skills/workflow-methodology
|
|
17
|
+
- `.opencode/commands/` — OpenCode slash commands (copied verbatim)
|
|
18
|
+
- `.agent/workflows/` — Antigravity/Codex workflows (copied verbatim)
|
|
19
|
+
- `.agents/skills/workflow-methodology/` — Antigravity/Codex skill
|
|
20
|
+
|
|
21
|
+
**AGENTS.md is hand-curated.** It is intentionally NOT auto-generated. It serves as the OpenCode system-prompt injection file — a different purpose than the consumer-facing plugin payload. Keep the two in sync manually.
|
|
22
|
+
|
|
23
|
+
## Workflow overview
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
```
|
|
26
|
+
/kickoff
|
|
27
|
+
└── /phase-1
|
|
28
|
+
└── /phase-2-step-1
|
|
29
|
+
└── /phase-2-step-2
|
|
30
|
+
└── /phase-2-step-3 (may loop back to step-1)
|
|
31
|
+
└── /phase-2-step-4
|
|
32
|
+
└── /phase-2-step-5
|
|
33
|
+
└── /phase-3
|
|
34
|
+
└── /phase-4
|
|
35
|
+
```
|
|
25
36
|
|
|
26
|
-
|
|
27
|
-
|------|---------|-----------------|
|
|
28
|
-
| `AGENTS.md` (this) | Injected into OpenCode system prompt when plugin runs | Hand-curated |
|
|
29
|
-
| `skills/workflow-methodology/SKILL.md` | Plugin payload for consumer projects (workflow content) | Hand-curated |
|
|
37
|
+
## Hard constraints (every phase)
|
|
30
38
|
|
|
31
|
-
|
|
39
|
+
- **AVOID overengineering.** Prefer simple, low-complexity implementations. Goal: high maintainability.
|
|
40
|
+
- **AVOID jargon.** Use plain language that states actual intent. Any developer should understand names without translation.
|
|
41
|
+
- **Never skip phases.** Design must be approved before implementation begins.
|
|
42
|
+
- **Iterative, not waterfall.** If a problem surfaces in a later phase but belongs to an earlier one (e.g. an Implement-phase bug that's a Design flaw), circle back to that phase. Do not silently work around it.
|
|
32
43
|
|
|
33
|
-
|
|
34
|
-
- `00-context.md`, `01-analyze.md`, `02-propose.md`, `02-atam.md`, `02-qa.md`, `02-hifi.md`, `02-journey.md`, `03-implement.md`, `04-postmortem.md`
|
|
35
|
-
- `/session-transcript` writes `aichat-<slug>.md` to the consumer project root
|
|
44
|
+
## How project tracking works
|
|
36
45
|
|
|
37
|
-
|
|
46
|
+
- `/kickoff` creates `.workflow/<slug>/00-context.md` (platform, description, existing services).
|
|
47
|
+
- Every later `/phase-*` command reads that file first — do not assume or hardcode platform/services.
|
|
48
|
+
- Project names are lowercase, hyphenated slugs (e.g. `article-quality-widget`).
|
|
49
|
+
- Session transcripts are written to the **project root** as `aichat-<slug>.md` (not inside `.workflow/`).
|
|
50
|
+
- `/session-transcript` appends to existing transcript files rather than overwriting.
|
|
38
51
|
|
|
39
|
-
|
|
52
|
+
## Phase 2 Step 3 quirk (SENTINEL guard)
|
|
40
53
|
|
|
41
|
-
|
|
54
|
+
In `/phase-2-step-3`, if the user copy-pastes the Quality Attributes example without modifying it, the warning text itself will appear in their response. The agent should detect this and keep asking for custom attributes. If the user still doesn't modify it, append `SENTINEL` to the final reminder. The agent does NOT proceed to scoring until custom attributes are provided.
|
|
42
55
|
|
|
43
|
-
##
|
|
56
|
+
## Platform quirks
|
|
44
57
|
|
|
45
|
-
- **
|
|
46
|
-
- **
|
|
47
|
-
-
|
|
48
|
-
|
|
58
|
+
- **OpenCode:** Commands land in `.opencode/commands/` (plural). The `opencode.json` references this plugin via `"plugin": ["@arsxxi/iterative-dev-workflow"]`. The install script (`bin/install-opencode-commands.mjs`) copies `commands/` to `~/.config/opencode/commands/` via `postinstall`.
|
|
59
|
+
- **Antigravity/Codex:** Workflows go in `.agent/workflows/` (singular), skills in `.agents/skills/` (plural).
|
|
60
|
+
- **Claude Code:** Uses `.toml` companion files in `commands/` (auto-generated). Hooks at `hooks/claude-codex-hooks.json` load `AGENTS.md` on session start.
|
|
61
|
+
|
|
62
|
+
## Development setup
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install # runs postinstall: installs OpenCode commands globally
|
|
66
|
+
bash scripts/sync-platforms.sh # syncs to all platform targets
|
|
67
|
+
```
|